내 pygtk 프로그래밍에서 뭔가 빠졌지 만, 예를 들어 신호를 연결하고 싶습니다. gtk.Entry
그리고 내가 그렇게 할 수있을 때만 연결 신호를 내 보낸다. 이다수동으로 위젯 기능을 전환하여 pygtk에서 신호를 내 보냅니다.
, 나는 Hello
만 "허용"되는 신호 때 인쇄 그래서 (만 상호 작용 사용)이 최소한의 코드 toggle_signalling
에 무언가를 추가 할 :
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()
내가 이전에 존재하게했습니다 그러한 송신 신호 상태에 대한 불린 플래그 내 맞춤 widget-classes에 self._updating
을 넣고, 무엇이든하기 전에 콜백 함수가이 상태를 체크하게하십시오. 그건 내가 원하는 것이 아니다.
예를 들어 버튼을 클릭했을 때 신호를 보내면 안된다는 것을 위젯에 알려주는 gtk-native 방식이 필요합니다. 나는이 일을 한 번 우연히 만났을 거라 확신하지만, 다시 찾는데 길을 잃어 버렸다.
또한 분명히하려면 위젯을 계속 사용하도록 설정해야합니다.
딱!이야 그것은 실제로 내가 찾고 있던'widget.handler_block'과'widget.handler_unblock'이었습니다. – deinonychusaur