我想创建一个简单的python应用程序,它在TKinter窗口中显示它从Websocket接收的内容。
我的问题是,我不能让两者并排运行。对于通信,我会使用一个队列,但我之前坚持了一步。
我的计划是在一个额外的线程中运行龙卷风循环,但不幸的是它不起作用。我搜索解决方案,但我没有找到任何有用的东西。
继承我的测试应用程序:
import threading
import tornado.ioloop
import tornado.web
import tornado.websocket
import Tkinter
class TornadoThread (threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
application = tornado.web.Application([(r'/',WSHandler)])
application.listen(9090)
def run(self):
print "Start a tornado"
tornado.ioloop.IOLoop.instance().start()
class WSHandler(tornado.websocket.WebSocketHandler):
def open(self):
print 'connection opened...'
self.write_message("The server says: 'Hello'. Connection was accepted.")
def on_message(self, message):
#self.write_message("The server says: " + message + " back at you")
print 'received:', message
def on_close(self):
print 'connection closed...'
TornadoThread = TornadoThread()
# Start new Threads
TornadoThread.start()
top = Tkinter.Tk()
top.mainloop()
`
答案 0 :(得分:1)
您在IOLoop.instance().start()
的调用中缺少括号。通过修复(以及一些其他更改,修复run方法的缩进并将myThread()
更改为TornadoThread()
),您的代码适合我。