【问题标题】:My signals are being ignored!我的信号被忽略了!
【发布时间】:2011-08-14 03:39:18
【问题描述】:

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

【问题讨论】:

  • 当我阅读标题时,我认为问题主题是一种关系。
  • self.wTree.connect_signals(dic) 是否返回无?
  • 您确定在 glade 中正确设置了处理程序吗?您发布的代码(修正了一些错别字)对我有用。

标签: python gtk pygtk


【解决方案1】:

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

但是,我不知道树对象是否属于这种情况。都一样,值得研究,恕我直言。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-18
    • 1970-01-01
    • 2013-09-30
    • 2016-06-20
    • 1970-01-01
    • 2018-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多