所以我在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()
答案 0 :(得分:0)
我不完全确定这是答案,但我知道许多PyGTK对象本身不能发送信号 - gtk.Image和gtk.Label就是两个这样的例子。解决方案是将窗口小部件放在事件框(gtk.EventBox)中,并将事件链接到该窗口。
然而,我不知道是否是树对象的情况。同样,值得调查,imho。