pygtk3 检查信号是否存在

pygtk3 checking does signal exist

在连接任何东西之前我如何学习这个。

例子

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

有一个神奇的工具叫做 'manual' or 'reference'. Look for the Gtk-3.0 manual, and click on Classes, and look for Gtk.Button. Look for Signals。如果不存在,您可以对从以前的对象继承的信号执行相同的操作。

使用 help(button 甚至 help(Gtk.Button)(在 Python3 中,无论是在交互中还是在程序中),您都可以访问所有方法,以及有关 class 和实例。

使用上面提到的手册,检查 GiRepository 模块 - 这些是您可以用来查看 Gtk 内部的函数,它的 classes 和属性。

您可以检查它是否有效:使用 try:/except: 检查您是否真的可以连接到您感兴趣的 signal/event。

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