[Twisted-Python] Conflict between Tkinter.mainloop() and twisted.internet.reactor.run()
hz hanks
hankshz at gmail.com
Fri Mar 30 18:36:19 EDT 2012
Hi all,
I'm writing a program with Twisted and use Tkinter to realize the GUI
interface. However, it seems that I can not run both
Tkinter.mainloop() and twisted.internet.reactor.run() in the same
thread because they will block the other. I tried to program a button
in Tkinter and when the button is pressed, it will start a new thread
using module threading, and call a function with the contend of
reactor.listenTCP(PORT, file_trans_service.getFileTransCtrlServFactory()
reactor.run()
But it will raise an exception as follows:
--- <exception caught here> ---
File "F:\Python27\lib\site-packages\twisted\internet\base.py", line
426, in _continueFiring
callable(*args, **kwargs)
File "F:\Python27\lib\site-packages\twisted\internet\base.py", line
1164, in _reallyStartRunning
self._handleSignals()
File "F:\Python27\lib\site-packages\twisted\internet\posixbase.py",
line 292, in _handleSignals
_SignalReactorMixin._handleSignals(self)
File "F:\Python27\lib\site-packages\twisted\internet\base.py", line
1129, in _handleSignals
signal.signal(signal.SIGINT, self.sigInt)
exceptions.ValueError: signal only works in main thread
And I also tried to run twisted.internet.reactor.run() in the main
thread, and use module threading or reactor.callInThread() to run
Tkinter.mainloop(). The interface will be displayed, but not
responding.
Any one knows how to solve this problem? I just need a Template to
realize the Twisted with GUI. Very appreciated!
Best,
Hanks
More information about the Twisted-Python
mailing list