如何将多个不同的窗口/对话框存储在一个 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 文件?或者在同一(初始)时间连接每个可能窗口的信号?
请您参考如下方法:
使用 gtk.Builder.add_from_file 将整个层次结构从您的文件添加到 Builder 对象,这就是您收到信号连接警告的原因; builder.connect_signals() 调用尝试连接一切。
相反,使用 gtk.Builder.add_objects_from_file选择您要在当前类中处理的单个顶级窗口或小部件。
