含有章节索引的中文 文章模板

::-- ehu4ever [2005-08-08 12:03:18]

Contents

  1. 打开box

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()