Torsten 的回答是正确的,但有点不完整,所以本着 http://xkcd.com/979/的精神,这是我最近经过反复试验后确定的程序:
在 Glade 界面设计器中打开 yada.glade。转到编辑->项目并将项目类型更改为 GtkBuilder 并确保它针对最新版本(撰写本文时为 2.24)。保存文件,确保它以 GtkBuilder 格式保存,并将名称从 yada.glade 更改为 yada.ui
打开 yada.py 并更改以下代码:
gladefile = relativize_filename(os.path.join("glade", "yada.glade"))
self.wTree = gtk.glade.XML(gladefile, self.windowname)
到:
uifile = relativize_filename(os.path.join("glade", "yada.ui"))
self.wTree = gtk.Builder()
self.wTree.add_from_file(uifile)
同样将所有实例更改self.wTree.get_widget(...)
为self.wTree.get_object(...)
更改self.wTree.signal_autoconnect(dic)
为self.wTree.connect_signals(dic)
如果您的代码依赖于界面设计器中分配给小部件的名称,请更改widget.get_name()
为gtk.Buildable.get_name(widget)
. widget.get_name()
现在只返回小部件类型。编辑:您还需要更改widget.set_name('my_widget')
为gtk.Buildable.set_name(widget, 'my_widget')
.
删除import gtk.glade
我发现在 yada.ui xml 文件中定义了许多未使用的信号,我不得不打开 xml 文件并手动删除它们以消除它们引起的警告。