PyGTK 盒子类
gtk.Box类是一个抽象的类,定义了一个容器的功能,其中的小部件被放置在一个矩形区域内。gtk.HBox和gtk.VBox小部件都是从它派生的。
gtk.Hbox中的子部件被水平地排列在同一行中。另一方面, gtk.VBox的子物件是垂直地排列在同一列中.
gtk.Box类使用以下构造函数-
gtk.Box(homogenous = True, spacing = 0)
默认情况下,同质属性被设置为True。因此, 所有的子物件都被给予平等的分配.
gtk.Box使用打包机制来放置子部件在其中,参考一个特定的位置,或者参考开始或结束。 pack_start()方法把部件从开始放到结束。相反,pack_end()方法将widget从末端放到开始。另外,你可以使用add()方法,它与pack_start()相似。
以下方法可用于gtk.HBox以及gtk.VBox −
- gtk_box_pack_start ()
-
gtk_box_pack_end ()
gtk_box_pack_start ()
该方法将子添加到盒子中,并以盒子的起始部分为参考进行打包 −
pack_start(child, expand = True, fill = True, padding = 0)
以下是参数 –
- child – 这是要被添加到盒子里的部件对象。
-
expand – 如果要在盒子里给孩子额外的空间,这将被设置为True。额外的空间将在所有的子 部件 之间划分 。
-
fill – 如果是True,额外的空间将被分配给child。否则,这个参数被用作填充。
-
padding – 这是盒子里的小部件之间的空间,单位是像素。
gtk_box_pack_end ()
这将child添加到盒子中,以盒子的末端为参考打包。
pack_end (child, expand = True, fill = True, padding = 0)
以下是参数 –
- child – 这是要添加的widget对象
-
expand – 如果要在盒子里给孩子额外的空间,这将被设置为True。这个额外的空间将在所有的子部件之间进行分配。
-
fill – 如果是True,额外的空间将被分配给子部件,否则作为padding使用。
-
padding – 这是盒子里的小部件之间的空间,单位是像素。
set_spacing (spacing) 是一个函数,用来设置盒子的子部件之间的像素数。
add (widget) 这个方法是从gtk.Container类继承来的。它将widget添加到容器中。这个方法可以用来代替pack_start()方法。
例子
在下面的例子中, 顶层窗口包含一个垂直盒子(gtk.VBox对象盒子).它又有一个VBX对象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()
上述代码将产生以下输出 —