2013-06-04 57 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)