Обработка нескольких окон в PyGTK/GtkBuilder
Как я могу сохранить несколько разных окон / диалогов в одном файле 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 ответ
С помощью gtk.Builder.add_from_file
добавляет всю иерархию из вашего файла в объект Builder, поэтому вы получаете предупреждения о сигнальном соединении; builder.connect_signals()
звонок пытается все соединить.
Вместо этого используйте gtk.Builder.add_objects_from_file
выбрать отдельное окно верхнего уровня или виджет, который вы хотите обработать в своем текущем классе.