PyGTK - AspectFrame 类

  • 简述

    gtk.AspectFrame 类是 Frame 类的子类。即使调整了主窗口的大小,此框架中的子窗口小部件也始终保持其纵横比(宽度和高度)。
    gtk.AspectFrame 小部件的 ratio 属性决定了小部件的宽高比。纵横比为 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属性为假。
    obeed_child 属性确定是否忽略该比率。默认值为真。
    以下代码类似于用于 Frame 类的代码。唯一的区别是 ButtonBox 放置在 AspectFrame 小部件中。
    
    frm = gtk.AspectFrame(label = None, xalign = 0.5, yalign = 0.5, 
       ratio = 5.0, obey_child = False)
    
    Note- obed_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