Ответ Торстена правильный, но немного неполный, поэтому в духе http://xkcd.com/979/ вот процедура, на которой я недавно остановился после долгих проб и ошибок:
Откройте yada.glade в конструкторе интерфейсов Glade. Перейдите в edit-> project и измените тип проекта на 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
Я обнаружил множество неиспользуемых сигналов, определенных в xml-файле yada.ui, мне пришлось открыть xml-файл и вручную удалить их, чтобы устранить вызванные ими предупреждения.