我的信号被忽略了!

时间:2011-06-22 10:35:51

标签: python gtk pygtk

所以我在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()

1 个答案:

答案 0 :(得分:0)

我不完全确定这是答案,但我知道许多PyGTK对象本身不能发送信号 - gtk.Image和gtk.Label就是两个这样的例子。解决方案是将窗口小部件放在事件框(gtk.EventBox)中,并将事件链接到该窗口。

然而,我不知道是否是树对象的情况。同样,值得调查,imho。