Обработка нескольких окон в PyGTK / GtkBuilder - PullRequest
1 голос
/ 07 июня 2011

Как я могу сохранить несколько разных окон / диалогов в одном файле GtkBuilder, а затем загрузить эти окна в разные классы (каждый класс соответствует своему окну)?Например, в настоящее время я делаю что-то вроде:

def __init__(self):
    self.builder = gtk.Builder()
    self.builder.add_from_file('gtkbuilder.xml')
    self.welcome_dialog = self.builder.get_object('welcome_dialog')
    self.builder.connect_signals(self)
    self.welcome_dialog.show()

. Это действительно программный продукт, но он выдает все виды предупреждений, таких как:

welcome_dialog.py:38: RuntimeWarning: missing handler 'on_contract_window_response'
  self.builder.connect_signals(self)

для каждогоиз обработчиков сигналов, которые я определил в Glade для всех остальных окон.Я думаю, все, что я хочу сделать, это подключить сигналы для этого единственного окна / диалога и игнорировать все остальное, но я не уверен, как это сделать.Или, может быть, я делаю что-то ужасно неправильно, и я должен разделить каждое окно на отдельный файл GtkBuilder?Или подключать сигналы для каждого возможного окна в одно и то же (начальное) время?

1 Ответ

7 голосов
/ 07 июня 2011

Использование gtk.Builder.add_from_file добавляет всю иерархию из вашего файла к объекту Builder, поэтому вы получаете предупреждения о сигнальном соединении;builder.connect_signals() вызов пытается подключиться все .

Вместо этого используйте gtk.Builder.add_objects_from_file, чтобы выбрать отдельное окно верхнего уровня или виджет, который вы хотите обработатьв вашем текущем классе.

...