使用gtk glade构建可重用组件

时间:2011-04-07 07:16:14

标签: python pygtk glade reusability

我正在编写一个简单的应用程序,并使用glade(gtk)作为UI。我需要很多窗口(~10),其中一个会打开,具体取决于命令行标志,其他上下文等等。

现在,所有这些窗口都非常相似,它们有3个顶级标签,最后一个标签相同,都有OKQuit按钮等,所以我是寻找在林间空地建造这些窗户的方法。我可以复制粘贴一个窗口并进行更改,但我正在寻找一种更好的方法,这将允许我重用窗口的公共部分。

另外,我正在使用pygtk来加载窗口。

2 个答案:

答案 0 :(得分:1)

使用您提到的常见方面设计小部件。无论您需要实现哪些不同的东西,请使用适当的名称添加GtkAlignment。不要忘记更改GtkAlignment的对齐和填充值。

在PyGTK中,您可以gtk.Builder.get_object(name)访问这些空白区域并在其中添加额外组件(也可以使用Glade设计)。

答案 1 :(得分:0)

好的,在detly的回答的帮助下,我能够得到一些有用的东西。对于任何需要它的人来说,这就是我所做的。

main.glade包含窗口以及我需要在所有窗口中显示的所有常见内容。 comp.glade包含一个窗口,带有我需要的额外内容的vbox组件,我们称之为'top_comp'。

现在,在main.glade中,我将gtk.Alignment组件放在需要加载额外组件的位置,并调用它,比如'comp_holder'。有了我的建设者,我做了

builder = gtk.Builder()
builder.add_from_file('main.glade'))
builder.add_from_file('comp.glade'))

builder.get_object('top_comp').reparent(builder.get_object('comp_holder'))

此方法目前似乎有效,但我不知道这是否是正确的做法。

对上述欢迎的任何建议。