1
我想使用GObject.add_emission_hook連接來捕獲一個類的所有實例的信號。它似乎工作,但只有一次。在下面的最小例子中,「接收到的信號」只打印一次,而不管其中一個按鈕被點擊多少次。爲什麼會這樣?我怎樣才能在每次點擊時收到一個信號?GObject.add_emission_hook只能工作一次
當然,在我的應用程序中,事情更加複雜,接收器(這裏是Foo類)不知道發射信號的對象。因此,連接到物體本身的信號是不可能的。
from gi.repository import Gtk
from gi.repository import GObject
class MyWindow(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title="Hello World")
vbox = Gtk.VBox()
self.add(vbox)
button = Gtk.Button(label="Click Here")
vbox.pack_start(button, True, True, 0)
button = Gtk.Button(label="Or There")
vbox.pack_start(button, True, True, 0)
self.show_all()
class Foo:
def __init__(self):
GObject.add_emission_hook(Gtk.Button, "clicked", self.on_button_press)
def on_button_press(self, *args):
print "signal received"
win = MyWindow()
foo = Foo()
Gtk.main()
返回True解決問題!在gtk文檔中找到這樣的東西非常困難(不可能)。謝謝! – uuazed 2012-07-07 21:41:07