pygtk3检查确实存在信号

时间:2017-08-25 03:42:13

标签: pygtk

如何在连接任何内容之前了解这一点。

例如

does_signal_exist(widget, signal):
    pass

button = Gtk.Button()

does_signal_exist(button, "clicked") # returns True
does_signal_exist(button, "hello") # returns False
does_signal_exist(button, "unboxed") # returns False
does_signal_exist(button, "button-press-event") # returns True

2 个答案:

答案 0 :(得分:1)

有一个名为'manual''reference'的奇妙工具。查找Gtk-3.0手册,然后点击Classes,然后查找Gtk.Button。寻找Signals。如果不存在,则可以对从先前对象继承的信号执行相同的操作。

使用help(button甚至help(Gtk.Button)(在Python3中,无论是在交互式还是在程序中),您都可以访问所有方法,以及有关该类和实例的许多其他信息。

使用上面提到的手册,查看GiRepository模块 - 这些函数可用于查看Gtk及其类和属性。

您可以检查它是否有效:使用try:/except:检查您是否可以实际连接到您感兴趣的信号/事件。

答案 1 :(得分:0)

def does_signal_exist(gtkWidgetObj, sigTag):
    try:
        gtkWidgetObj.emit(sigTag)
        return True
    except:
        return "unknown signal name" not in format_exc():