2

アプリケーションのハンドラを整理して、アプリケーションのクラスが 1 つだけにならないようにするにはどうすればよいですか? より正確に言うと、私のアプリケーションは現在次のように編成されています。

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)を呼び出すときに問題が発生し、メインウィンドウの信号のみを接続しますアプリケーションの残りの部分ではありません。

4

1 に答える 1

1

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) 
于 2013-06-06T15:40:33.480 に答える