Pygtk 简明教程

PyGTK - Box Class

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,可以使用以下方法 −

  1. gtk_box_pack_start ()

  2. gtk_box_pack_end ()

gtk_box_pack_start ()

此方法将 child 添加到盒子中,并根据盒子的开始进行打包 −

pack_start(child, expand = True, fill = True, padding = 0)

以下为参数 −

  1. child − 这是要添加到盒子中的小部件对象

  2. expand − 如果要给子在盒子中提供额外的空间,则将其设置为 True。额外空间在所有子 widgets 之间分配。

  3. fill − 如果为 True,将额外空间分配给子。否则,此参数用作填充。

  4. padding − 这是盒子中各个小部件之间的像素空间。

gtk_box_pack_end ()

这将子添加到盒子中,并根据盒子的结尾进行打包。

pack_end (child, expand = True, fill = True, padding = 0)

以下为参数 −

  1. child − 这是要添加的小部件对象

  2. expand − 如果要给子在盒子中提供额外的空间,则将其设置为 True。此额外的空间在所有子小部件之间分配。

  3. fill − 如果为 True,将额外空间分配给子,否则用作填充。

  4. padding − 这是盒子中各个小部件之间的像素空间。

set_spacing (spacing) 是一个函数,用于设置在盒子的各个子之间放置的像素数。

方法 add (widget) 从 gtk.Container 类派生。它向容器中添加部件。可以使用此方法替代 pack_start() 方法。

Example

在下面给出的示例中,顶级窗口包含一个垂直盒子(gtk.VBox 对象 box)。它又有一个 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 demo