2011-06-22 3 views
1

私はGladeでUIを開発し、Pythonでプログラムをコーディングしています。何らかの理由で、私のすべての信号が無視されています!私はそれらを正しく接続しましたが(私は思います)、ボタンをクリックすることは絶対に何もしません!私のシグナルは無視されています!

以下は、私がuiをロードして信号を接続するために使用しているコードです。誰も彼らが無視されているのを見ることができますか?

class mySampleClass(object): 

def __init__(self): 
    self.uiFile = "MainWindow.glade" 
    self.wTree = gtk.Builder() 
    self.wTree.add_from_file(self.uiFile) 

    self.window = self.wTree.get_object("winMain") 
    if self.window: 
     self.window.connect("destroy", gtk.main_quit) 

     dic = { "on_btnExit_clicked" : self.clickButton, "on_winMain_destroy" : gtk.main_quit } 
     self.wTree.connect_signals(dic) 
     self.window.show() 
    else: 
     print "Could not load window" 
     sys.exit(1) 


def clickButton(self, widget): 
    print "You clicked exit!" 


def exit(self, widget): 
    gtk.main_quit() 

def update_file_selection(self, widget, data=None): 
    selected_filename = FileChooser.get_filename() 
    print selected_filename 

if __name__ == "__main__": 
MyApp = MySampleClass() 
gtk.main() 
+2

タイトルを読んだとき、私は質問対象が関係であると思った。 – orlp

+0

self.wTree.connect_signals(dic)は何も返しませんか? – Mark

+0

ハンドラを手すりで正しく設定してもよろしいですか?投稿したコード(いくつかのタイプミスを修正したもの)が私のために働いた。 –

答えて

0

私は、これが答えであることを完全にわからないんだけど、私はPyGTKのオブジェクトの数は、信号自体を送信することはできませんことを知っている - gtk.Imageとgtk.Labelは、2つのそのような例です。解決策は、ウィジェットをイベントボックス(gtk.EventBox)の中に置き、イベントをそのウィジェットにリンクすることです。

ただし、これがツリーオブジェクトの場合はわかりません。すべて同じ、調査する価値がある、イホ。

関連する問題