1

如何将多个不同的窗口/对话框存储在一个 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 文件?或者在同一(初始)时间连接每个可能窗口的信号?

4

1 回答 1

7

使用gtk.Builder.add_from_file将整个层次结构从您的文件添加到 Builder 对象,这就是您收到信号连接警告的原因;builder.connect_signals()通话试图连接一切

相反,使用gtk.Builder.add_objects_from_file选择要在当前类中处理的单个顶级窗口或小部件。

于 2011-06-07T01:41:03.660 回答