在PyGTK/GtkBuilder中处理多个窗口

dum*_*ter 1 python pygtk glade 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()
Run Code Online (Sandbox Code Playgroud)

这确实产生了一个功能很强的软件,但是它会发出各种各样的警告:

welcome_dialog.py:38: RuntimeWarning: missing handler 'on_contract_window_response'
  self.builder.connect_signals(self)
Run Code Online (Sandbox Code Playgroud)

对于我在Glade中为所有其他窗口定义的每个信号处理程序.我想我想做的就是连接这个单一窗口/对话框的信号并忽略其他一切,但我不知道该怎么做.或者也许我正在做一些可怕的错误,我应该将每个窗口拆分成不同的GtkBuilder文件?或者在相同(初始)时间为每个可能的窗口连接信号?

Kai*_*Kai 7

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

而是gtk.Builder.add_objects_from_file用于选择要在当前类中处理的单个顶级窗口或窗口小部件.