如何使用GtkBuilder重用glade文件中的小部件树?
我想要动态地填充一个gtk.notebook。每次用户打开一个文件时,就会生成一个新的笔记本标签,这个过程很简单。不过,我遇到的问题是,我使用glade来构建用户界面,而这个笔记本标签应该有一个子控件树(也就是滚动窗口->视口->对齐->框架)。在我的glade文件中,我有一个模板笔记本标签,我想多次使用它,这样我就不需要用纯gtk代码来编写整个控件树。使用libglade时,你可以像在pygtk常见问题解答中解释的那样重用一个控件树:http://faq.pygtk.org/index.py?file=faq22.011.htp&req=show。那么,我该如何使用GtkBuilder来做到这一点呢?
提前谢谢你,
Arthur
1 个回答
1
用GtkBuilder这样做:
builder = gtk.Builder()
builder.add_from_file("GUI.xml")
builder.connect_signals(self)
self.window1 = builder.get_object("window1")
self.window1.show()
补充:
我之前说错了,似乎gtkbuilder在添加的时候确实会实例化对象。所以最好的方法是通过字符串手动添加这个小部件。
builder.add_from_string("""
<interface>
<object class="GtkWindow" id="window1">
<child>
<object class="GtkComboBox" id="combobox1">
<property name="model">liststore1</property>
</object>
</child>
</object>
</interface>""")
self.window1 = builder.get_object("window1")
希望这样能成功!