含有章节索引的中文 文章模板
::-- ehu4ever [2005-08-08 12:03:18]
Contents
1. 打开box
由于非常的灵活,packing在刚刚开始接触的时候真是让人头痛。它有很多的个性化选项,一时间是很难搞清楚它们的。但是,它只有五种不同的基本样式。下图是程序packbox.py的运行结果(参数是1):
Figure 4.1. Packing: Five Variations |
主窗口的每一行都是一个包含了多个widget的gtk.HBox,每一个widget都是用相同的方法放进gtk.HBox里的(当然使用了一些性化的参数)。
这是一个pack_start()的例子:
box.pack_start(child, expand, fill, padding)
上面的box就是放widget的gtk.HBox。第一个参数child就是要放进gtk.HBox的widget,现在是gtk.Button。
expand参数如果是True,那么gtk.HBox里的widget将会均匀地分布满整个box(各个widget不会贴在一起);如果是False,那么gtk.HBox里的widget会一个接一个地靠向一边(左或右)。pack_start()和pack_end()都有这个功能。
fill参数是True的时候,box里的widget一个贴一个地占满整个box;当它是False的时候,box里的widget在有足够空间的时候是不会贴在一起的。所以,它只会在expand参数是True的时候才会产生作用。
Python允许函数定义参数的关键词和默认值,在这篇文档里我们尽可能地定义关键词和默认值。比如,pack_start()是这样定义的:
box.pack_start(child, expand=True, fill=True, padding=0) box.pack_end(child, expand=True, fill=True, padding=0)
上面的定义中child、expand、fill、padding是关键词,expand、fill、padding是有默认值的,而child必须有一个传入值。
box是这样定义的:
hbox = gtk.HBox(homogeneous=False, spacing=0) vbox = gtk.VBox(homogeneous=False, spacing=0)
上面的homogeneous参数是决定box里的widget是否是同样大小(gtk.HBox里是指同样宽,gtk.VBox里是指同样高)。当它是True的时候,就和expand参数永远是True是一个样了。
spacing和padding之间有什么区别呢?spacing是指定widget之间的空隙怎样怎样,而padding是指定widget的某一条边怎样怎样。
下图是packbox.py当命令行参数是2的时候的运行结果,演示了spacing和padding之间的不同。
Figure 4.2. Packing with Spacing and Padding |
下图是packbox.py当命令行参数是3的时候的运行结果,演示了pack_end()的使用。那个文本标签“end”是用pack_end()放进box里的。无论主窗口大小缩放,它都会在box的右边。
Figure 4.3. Packing with pack_end() |