트위스트에 대해 이해하는 것으로부터, 리액터 스레드에서 실행되는 것은 차단되어서는 안됩니다. 모든 블로킹 활동은 다른 스레드로 위임되어야하며 콜백이 완료되면 원자로 스레드로 되돌아갑니다.twisted + gtk : 스레드 또는 반응기 스레드에서 GUI 작업을 실행해야합니까?
이렇게하면 gtk 일에도 적용됩니까? 예를 들어 연결이 실패하면 "연결 실패"메시지를 표시하려고합니다. 어떻게해야합니까 :
def connectionFailed(self, reason):
dlg = gtk.MessageDialog(type=gtk.MESSAGE_ERROR,
buttons=gtk.BUTTONS_CLOSE,
message_format="Could not connect to server:\n%s" % (
reason.getErrorMessage()))
dlg.run()
나 :
def connectionFailed(self, reason):
dlg = gtk.MessageDialog(type=gtk.MESSAGE_ERROR,
buttons=gtk.BUTTONS_CLOSE,
message_format="Could not connect to server:\n%s" % (
reason.getErrorMessage()))
reactor.callInThread(dlg.run)
나 :
def connectionFailed(self, reason):
def bloogedy():
dlg = gtk.MessageDialog(type=gtk.MESSAGE_ERROR,
buttons=gtk.BUTTONS_CLOSE,
message_format="Could not connect to server:\n%s" % (
reason.getErrorMessage()))
dlg.run()
reactor.callInThread(bloogedy)
?
편집 : 우 오케이, 후자의 두 사람은 정말 엉망이되었습니다. 그래서 나는 대답이 첫 번째라고 생각합니다. 그럼 내 질문은 : 왜? 이것은 원자로 실을 막는 것처럼 보입니다.
아에 시작하는 코드를 포함하도록 메시지를 편집했습니다. 나는 run()과 관련이 있다는 것을 암시했다. 지연은 확실히 방법입니다. – Claudiu