2017-08-25 46 views
-1

如何在連接任何東西之前學會這一點。pygtk3檢查信號是否存在

例如

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 

回答

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

有一個叫'manual''reference'奇妙的工具。查找Gtk-3.0手冊,然後單擊Classes,然後查找Gtk.Button。尋找Signals。如果不存在,您可以對從之前的對象繼承的信號執行相同的操作。

使用help(button甚至help(Gtk.Button)(內Python3,在交互或程序),您可以訪問所有的方法,以及許多關於類和實例等信息。

使用上面提到的手冊,查看GiRepository模塊 - 這些函數可以用來查看Gtk,它的類和屬性。

,你可以直接檢查,如果它的工作原理:使用try:/except:檢查,如果你實際上可以連接到信號/事件你有興趣