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() 方法从结尾到开头放置小部件。或者,您可以使用 add() 方法,它类似于 pack_start()。

以下方法适用于 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。额外空间将平均分配给所有子小部件

  • fill - 如果为 True,则将额外空间分配给子小部件;否则,此参数用作填充。

  • padding - 框中小部件之间的像素间距。

gtk_box_pack_end ()

这将 child 添加到框中,相对于框的结尾进行打包。

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

参数如下:

  • child - 要添加的小部件对象

  • expand - 如果要为子小部件在框中分配额外空间,则将其设置为 True。额外空间将平均分配给所有子小部件。

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

  • padding - 框中小部件之间的像素间距。

set_spacing (spacing) 函数设置在框的子元素之间放置的像素数。

add (widget) 方法继承自 gtk.Container 类。它将 widget 添加到容器中。此方法可以替代 pack_start() 方法。

示例

在下面的示例中,顶级窗口包含一个垂直框(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
广告
© . All rights reserved.