2011-06-06 85 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來選擇要在當前課程中處理的單個頂級窗口或小部件。