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)

The following are the parameters −

  • child − 这是要添加到框的小部件对象

  • expand − 如果要在框中为子部件提供额外空间,则将其设置为 True。 额外空间在所有子小部件之间分配。

  • fill − 如果为真,额外的空间将分配给子部件。 否则,此参数用作填充。

  • padding − 这是框中小部件之间的空间(以像素为单位)。


gtk_box_pack_end ()

这会将 child 添加到盒子中,并参考盒子的末端进行打包。

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

以下是参数 −

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

  • expand − 如果要在框中为子部件提供额外空间,则将其设置为 True。 这个额外的空间在所有子部件之间分配。

  • fill − 如果为 True,额外的空间将分配给子部件,否则用作填充。

  • padding − 这是框中小部件之间的间距(以像素为单位)。

set_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 演示