我可能在我的 pygtk 编程中遗漏了一些基本的东西,但是我想将一个信号连接到例如 angtk.Entry
然后让它只在我允许它这样做时才发出连接的信号。
也就是说,我想toggle_signalling
在这个最小代码中添加一些东西(仅用于交互使用),以便Hello
仅在“允许”信号时打印:
import gtk
signal_states = ['On', 'Off']
signal_state = True
def reporter_function(*args,**kwargs):
print "Hello"
def toggle_signaling(widget, **kwargs):
global signal_state
signal_state = not signal_state
widget.set_label(signal_states[signal_state])
print ['Emit allowed', 'Emit not allowed'][not signal_state]
w = gtk.Window()
e = gtk.Entry()
b = gtk.Button(label=signal_states[signal_state])
hbox = gtk.HBox()
hbox.pack_start(e)
hbox.pack_end(b)
e.connect("changed", reporter_function)
b.connect("clicked", toggle_signaling)
w.add(hbox)
w.show_all()
我以前让这种发送信号状态有一个布尔标志,例如self._updating
在我的自定义小部件类中,并让回调函数在做任何事情之前检查这个状态。那不是我想要的。
我想要一种 gtk-native 方式让小部件知道它不应该发送信号(当我单击示例中的按钮时)。我很确定我曾经偶然发现过这样做的方法,但我迷失了再次找到它。
此外,绝对清楚,仍然必须允许启用小部件。