2013-06-04 105 views
2

如何組織我的應用程序的處理程序,以便我的應用程序不會只有一個類?更精確地說我的申請目前正在組織以下列方式:Gtkbuilder連接信號組織

class main_application(object): 
    def handler1(): 
     ... 
    def handler2(): 
     ... 

    #lots of handlers... 


    def __init__(self): 
     self.builder = gtk.Builder() 
     self.builder.add_from_file("gui.ui") 
     self.builder.connect_signals(self) 

     #build window 
     #.... 
     #tab 1 
     #tab 2 
     #and etc.. 

     self.builder.connect_signals(self) 
     self.gtk_main_window.show_all() 

if __name__ == '__main__': 
    main_application() 
gtk.main() 

所以我的問題是,我想要做一個類每一個選項卡(GtkNotebook)/處理我有我的應用程序,但我有一個調用self.builder.connect_signals(self)時出現問題,它只連接我的主窗口的信號,而不是其他應用程序的信號。

回答

1

我找到解決我的問題,而不是使用GtkBuilder我使用的空地文件(libglade的)的不同的格式和替換signal_autoconnect的connect_signals:

def __init__(self): 
     self.gladefile = "gui.glade" 
     self.builder = gtk.glade.XML(self.gladefile, "gtk_main_window") 
     self.gtk_main_window = self.builder.get_widget("gtk_main_window") 
     self.builder.signal_autoconnect(self)