PyGTK - Box 类

  • 简述

    gtk.Box 类是一个抽象类,它定义了将小部件放置在矩形区域中的容器的功能。 gtk.HBox 和 gtk.VBox 小部件都是从它派生的。
    gtk.Hbox 中的子小部件水平排列在同一行中。另一方面,gtk.VBox 的子部件垂直排列在同一列中。
    gtk.Box 类使用以下构造函数 -
    
    gtk.Box(homogenous = True, spacing = 0)
    
    homogenous 属性默认设置为 True。因此,所有子小部件都被平等分配。
    gtk.Box 使用打包机制根据特定位置(参考开始或结束)将子小部件放置在其中。 pack_start() 方法从头到尾放置小部件。相反,pack_end() 方法将小部件从头到尾放置。或者,您可以使用类似于 pack_start() 的 add() 方法。
    gtk.HBox 和 gtk.VBox 可以使用以下方法 -
    • gtk_box_pack_start ()
    • gtk_box_pack_end ()
  • gtk_box_pack_start()

    该方法将child添加到盒子中,参考盒子的开头打包-
    
    pack_start(child, expand = True, fill = True, padding = 0)
    
    以下是参数-
    • child - 这是要添加到框的小部件对象
    • expand - 如果要在框中给孩子额外的空间,则将其设置为 True。额外空间在所有子 widgets 之间分配。
    • fill - 如果为 True,则会为孩子分配额外的空间。否则,此参数用作填充。
    • padding - 这是框中小部件之间的像素空间。
  • gtk_box_pack_end()

    这会将子元素添加到盒子中,并参考盒子的末端进行包装。
    
    pack_end (child, expand = True, fill = True, padding = 0)
    
    以下是参数-
    • child - 这是要添加的小部件对象
    • expand - 如果要在框中给孩子额外的空间,则将其设置为 True。这个额外的空间在所有子小部件之间分配。
    • fill - 如果为 True,则会将额外空间分配给子级,否则用作填充。
    • padding - 这是框中小部件之间的像素空间。
    set_spacing (spacing) 是设置要放置在盒子的孩子之间的像素数的函数。
    add (widget) 方法继承自 gtk.Container 类。它将小部件添加到容器中。可以使用该方法代替 pack_start() 方法。
  • 示例

    在下面给出的示例中,顶层窗口包含一个垂直框(gtk.VBox 对象框)。它又具有一个 VBox 对象 vb 和 HBox 对象 hb。在上面的框中,垂直放置了一个标签、一个条目小部件和一个按钮。在下方的框中,垂直放置了另一组标签、条目和按钮。
    观察以下代码 -
    
    import gtk
    class PyApp(gtk.Window):
       def __init__(self):
          super(PyApp, self).__init__()
             self.set_title("Box demo")
          
          box = gtk.VBox()
          vb = gtk.VBox()
          lbl = gtk.Label("Enter name")
          
          vb.pack_start(lbl, expand = True, fill = True, padding = 10)
          text = gtk.Entry()
          
          vb.pack_start(text, expand = True, fill = True, padding = 10)
          btn = gtk.Button(stock = gtk.STOCK_OK)
          
          vb.pack_start(btn, expand = True, fill = True, padding = 10)
          hb = gtk.HBox()
          
          lbl1 = gtk.Label("Enter marks")
          hb.pack_start(lbl1, expand = True, fill = True, padding = 5)
          text1 = gtk.Entry()
          
          hb.pack_start(text1, expand = True, fill = True, padding = 5)
          btn1 = gtk.Button(stock = gtk.STOCK_SAVE)
          
          hb.pack_start(btn1, expand = True, fill = True, padding = 5)
          box.add(vb)
          box.add(hb)
          self.add(box)
          self.show_all()
    PyApp()
    gtk.main()
    
    上面的代码将产生以下输出 -
    box