使用GTK Glade构建可重用组件

1 投票
2 回答
1118 浏览
提问于 2025-04-16 15:15

我正在写一个简单的应用程序,使用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设计)。

撰写回答