PyGTK Box类
gtk.Box 类是一个抽象类,定义了一个容器的功能,在矩形区域中放置小部件。gtk.HBox 和 gtk.VBox 小部件是其派生类。
gtk.HBox 中的子小部件水平排列在同一行中。而 gtk.VBox 的子小部件垂直排列在同一列中。
gtk.Box 类使用以下构造函数:
gtk.Box(homogenous = True, spacing = 0)
homogeneous属性默认为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 − 如果要给child提供额外空间,则设置为True。额外空间在所有的子小部件之间平分。
-
fill − 如果为True,则将额外的空间分配给child。否则,该参数被用作填充。
-
padding − 这是盒子中小部件之间的像素间隔。
gtk_box_pack_end ()
这将child添加到盒子中,并将其相对于盒子末端进行封装。
pack_end (child, expand = True, fill = True, padding = 0)
以下是参数:
- child −这是要添加的小部件对象。
-
expand −如果child需要在框中获得额外空间,则设置为True。这个额外的空间会被均分给所有的子小部件。
-
fill −如果为True,则额外的空间将分配给child,否则用作填充。
-
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()
以上代码将产生以下输出−