使用GTK Glade构建可重用组件
我正在写一个简单的应用程序,使用glade(gtk)来设计用户界面。我需要很多窗口,大约有10个,这些窗口会根据命令行的参数和其他上下文信息来决定打开哪个。
这些窗口其实都挺相似的,它们都有3个主要的标签页,最后一个标签页在所有窗口中都是一样的,所有窗口都有一个OK
按钮和一个Quit
按钮等等。所以我想找一种方法在glade中构建这些窗口。我可以复制一个窗口,然后在上面进行修改,但我希望能有更好的方法,这样可以重用窗口中共同的部分。
另外,我还在使用pygtk来加载这些窗口。
2 个回答
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'))
这个方法现在看起来是有效的,但我不确定这是不是正确的做法。
欢迎对以上内容提出任何建议。
1
设计一个小部件,包含你提到的那些常见的方面。每当你需要实现一些不同的功能时,就放一个GtkAlignment,并给它起个合适的名字。别忘了调整GtkAlignment的对齐方式和填充值。
在PyGTK中,你可以使用gtk.Builder.get_object(name)来访问这些空白区域,并在里面添加额外的组件(这些组件也可以用Glade设计)。