2011-06-06 58 views
1

如何在单个GtkBuilder文件中存储多个不同的窗口/对话框,然后将这些窗口加载到不同的类中(每个类对应于不同的窗口)?举例来说,我目前正在做这样的事情:在PyGTK/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() 

这确实能产生functioniong的软件,但它吐出来的各种警告,如:

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

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

回答

7

使用gtk.Builder.add_from_file将文件的整个层次结构添加到Builder对象中,这就是为什么您会收到信号连接警告;拨打builder.connect_signals()的电话尝试连接的所有内容

取而代之,请使用gtk.Builder.add_objects_from_file来选择要在当前课程中处理的单个顶级窗口或小部件。