Класс 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()
Приведенный выше код создаст следующие оригинальные и измененные размеры окон:
Оригинальное окно
Изменение размера окна