2011-06-22 69 views
1

所以我在Glade中开发了一个用户界面,并在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是两个这样的例子。解决方案是将小部件放置在事件框(gtk.EventBox)中并将事件链接到该小部件。

但是,我不知道树对象是否是这种情况。一切都一样,值得调查,恕我直言。