tornado和tkinter togeth

2024-10-01 00:15:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我是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}$

Tags: importselfwebmessageondeforiginconnection
1条回答
网友
1楼 · 发布于 2024-10-01 00:15:55

如果使用tornado.ioloop.IOLoop.instance().start(),则会启动一个循环,该循环将阻塞当前线程,直到调用tornado.ioloop.IOLoop.instance().stop(),但这也会停止tornado服务器。如果你想执行另一个循环,比如tkinter主循环,那么你必须在另一个线程中同时运行这两个循环。如果你不知道什么线程只是搜索python线程教程

相关问题 更多 >