我是python编程新手。请耐心点。我使用的是python3,我需要打开一个websocket通信并显示一个图形界面。但是如果我把它们放在同一个代码中,它们就不起作用了,因为它们都在循环函数上工作。在
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
import tornado.websocket
from tkinter import *
class ConfigurationHandler(tornado.websocket.WebSocketHandler):
def open(self):
print ("Connection Opened")
self.write_message("connected")
def on_close(self):
print ("Connection Closed")
def on_message(self, message):
print (("Message received: {}").format(message))
self.write_message(message)
def check_origin(self, origin):
return True
try:
application= tornado.web.Application([(r"/",ConfigurationHandler)])
if __name__ == "__main__":
app=tornado.httpserver.HTTPServer(application)
print("waiting")
app.listen(8000)
tornado.ioloop.IOLoop.instance().start()
root=Tk() #I need to see this window
root.mainloop()
except (KeyboardInterrupt,SystemExit):
raise
except:
print("Error")
对不起,我的英语不好, 提前谢谢!在
多亏了@DoNotClick我解决了我的问题。在
解决方案:
^{pr2}$
如果使用
tornado.ioloop.IOLoop.instance().start()
,则会启动一个循环,该循环将阻塞当前线程,直到调用tornado.ioloop.IOLoop.instance().stop()
,但这也会停止tornado服务器。如果你想执行另一个循环,比如tkinter主循环,那么你必须在另一个线程中同时运行这两个循环。如果你不知道什么线程只是搜索python线程教程相关问题 更多 >
编程相关推荐