Поэтому я разработал пользовательский интерфейс в 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()
Я не совсем уверен, что это ответ, но я знаю, что несколько объектов PyGTK не могут сами отправлять сигналы - gtk.Image и gtk.Label - это два таких примера. Решение состоит в том, чтобы поместить виджет внутри поля события (gtk.EventBox) и связать события с этим.
Однако я не знаю, если это так, например, с древовидными объектами. Тем не менее, стоит исследовать, имхо.