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)
Note - Для свойства 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()
Приведенный выше код создаст следующие исходные окна с измененным размером:
Original Window
Resized Window