2009-11-12 4 views
1

결과를 서버로 보내고 서버가 확인을 전송할 때까지 기다린 다음 종료 할 때 twisted 및 tkinter를 사용하는 앱을 실행 중입니다. 이것은 다음 프로토콜의 dataReceived 기능에 공장에서 설정이라고종료시 Twisted/tkinter 프로그램이 종료 됨

def term(): 
    '''To end the program''' 
    reactor.stop() 
    root.quit() 
    root.destroy() 

: 그래서, 출구에 사용하는 기능이있다. 나는 그것을 실행하고 프로그램이 잘 실행 심지어 필요한 데이터를 전송하고 닫습니다,하지만 그것도 나에게 다음과 같은 오류 보고서를 제공합니다

Unhandled error in Deferred: 
Traceback (most recent call last): 
    File "D:\Python25\Lib\site-packages\twisted\internet\base.py", line 1128, in run 
    self.mainLoop() 
    File "D:\Python25\Lib\site-packages\twisted\internet\base.py", line 1137, in mainLoop 
    self.runUntilCurrent() 
    File "D:\Python25\Lib\site-packages\twisted\internet\base.py", line 757, in runUntilCurrent 
    call.func(*call.args, **call.kw) 
    File "D:\Python25\Lib\site-packages\twisted\internet\task.py", line 114, in __call__ 
    d = defer.maybeDeferred(self.f, *self.a, **self.kw) 
--- <exception caught here> --- 
    File "D:\Python25\Lib\site-packages\twisted\internet\defer.py", line 106, in maybeDeferred 
    result = f(*args, **kw) 
    File "D:\Python25\lib\lib-tk\Tkinter.py", line 917, in update 
    self.tk.call('update') 
_tkinter.TclError: can't invoke "update" command: application has been destroyed 

사람이 왜 알고 있나요을?

답변

1

root.destroy() 호출은 불필요합니다. Twisted 및 Tk를 3 초 동안 실행 한 다음 종료하는 간단한 예제를 생각해보십시오.

import Tkinter 
from twisted.internet import tksupport 

root = Tkinter.Tk() 
tksupport.install(root) 

from twisted.internet import reactor 
reactor.callLater(3, reactor.stop) 
reactor.run() 
+0

더 이상 문제가 발생하지 않으므로 고맙습니다. – Nikwin

관련 문제