Tkinter应用能否使用httpServer?

2024-04-25 15:19:04 发布

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

我目前有下面的代码,可以作为一个演示使用。代码被设置为创建一个带有按钮的Tkinter窗口。当按下按钮时,它将启动本地主机上的HttpServer。我遇到的问题是GUI进入冻结/暂停/崩溃状态,我不明白为什么。我知道Tkinter是在一个线程中运行的,但不确定一个线程会如何影响它。你知道吗

def OpenUrl():
    run()

class server_callback(BaseHTTPRequestHandler):

  def do_GET(self):
        # Send response status code
        self.send_response(200)
        # Send headers
        self.send_header('Content-type','text/html')
        self.end_headers()
        # Send message back to client
        message = "You can now close this Browser session!"
        # Write content as utf-8 data
        self.wfile.write(bytes(message, "utf8"))
        return

def run():
  print('starting server...')
  server_address = ('127.0.0.1', 8080)
  httpd = HTTPServer(server_address, server_callback)
  print('running server...')
  httpd.serve_forever()

root = Tk()
frame = Frame(root)
frame.pack()
button = Button(frame, text="CLICK", command=OpenUrl)
button.pack()
root.mainloop()

Tags: run代码selfsendmessageservertkinterresponse