Skip to main content
 首页 » 编程设计

python之Gtkbuilder 连接信号组织

2025年05月04日30over140

我如何组织我的应用程序的处理程序,这样我的应用程序就不会只有一个类?更准确地说,我的应用程序目前按以下方式组织:

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)时遇到问题,它只连接信号我的主窗口而不是应用程序的其余部分。

请您参考如下方法:

我找到了解决问题的方法,我没有使用 GtkBuilder,而是使用了不同格式的空地文件 (libglade),并将 connect_signals 替换为 signal_autoconnect:

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)