Учебники

PyGTK — класс AspectFrame

Класс gtk.AspectFrame является подклассом класса Frame. Дочерний виджет в этом фрейме всегда сохраняет свое соотношение сторон (ширины и высоты), даже если основное окно изменено.

Свойство ratio для виджета gtk.AspectFrame определяет соотношение ширины и высоты виджета. Соотношение сторон 0,5 означает, что ширина равна половине высоты; соотношение сторон 2,0 означает, что ширина в два раза больше высоты. Значение по умолчанию для свойства «ratio» — 1,0.

Следующий синтаксис используется для конструктора класса gtk.AspectFrame —

gtk.AspectFrame (label = None, xalign = 0.5, yalign = 0.5, ratio = 1.0, obey_child = True)

Свойство xalign определяет долю свободного пространства по горизонтали слева от дочернего элемента. 0.0 означает отсутствие свободного места слева, 1.0 означает все свободное пространство слева.

Свойство yalign определяет долю вертикального свободного пространства над дочерним элементом. 0.0 означает, что свободного пространства нет, 1.0 означает, что все свободное пространство находится выше.

Отношение ширины к высоте кадра сохраняется, если свойство obey_child имеет значение False.

Свойство obey_child определяет, должно ли отношение игнорироваться. По умолчанию установлено значение True.

Следующий код похож на тот, который используется для класса Frame. Единственное отличие состоит в том, что ButonBox размещается в виджете AspectFrame.

frm = gtk.AspectFrame(label = None, xalign = 0.5, yalign = 0.5, 
   ratio = 5.0, obey_child = False)

Примечание . Для свойства obey_child установлено значение False, поскольку желательно сохранять соотношение сторон, даже если размер окна изменяется.

пример

Соблюдайте следующий код —

import gtk

class PyApp(gtk.Window):
   def __init__(self):
      super(PyApp, self).__init__()
      self.set_title("Aspect Frame Demo")
      self.set_default_size(250, 200)
      self.set_border_width(5)
      frm = gtk.AspectFrame(label = None, xalign = 0.5, yalign = 0.5, 
         ratio = 5.0, obey_child = False)
      hb = gtk.HButtonBox()
      btn1 = gtk.RadioButton(None,"Degree")
      hb.add(btn1)
      btn2 = gtk.RadioButton(btn1,"P.G.")
      hb.add(btn2)
      btn3 = gtk.RadioButton(btn1,"Doctorate")
      hb.add(btn3)
      frm.add(hb)
      frm.set_label("Qualifications")
      self.add(frm)
      self.connect("destroy", gtk.main_quit)
      self.show_all()
      
if __name__ == '__main__':
   PyApp()
   gtk.main()

Приведенный выше код создаст следующие оригинальные и измененные размеры окон:

Aspect Frame Demo

Оригинальное окно

Aspect Frame Demo

Изменение размера окна