PyGTK AspectFrame类
gtk.AspectFrame类是Frame类的一个子类。这个框架中的子部件总是保持它的长宽比(宽度和高度),即使主窗口被调整大小。
gtk.AspectFrame widget的ratio属性决定了widget的宽高比。长宽比为0.5意味着宽度是高度的一半;长宽比为2.0意味着宽度是高度的两倍。比例 “属性的默认值是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属性决定了该比例是否会被忽略。默认为 “真”。
下面的代码与用于Frame类的代码相似。唯一不同的是,ButonBox被放置在一个AspectFrame widget中。
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()
上述代码将产生以下原始和调整后的窗口 –
原始窗口
调整后 的窗口