Python 服务器创建后 GUI 没有响应

Python GUI doesn't respond after the server creation

我尝试制作一个 Tkinter GUI,您可以在其中指定端口并使用给定端口创建本地服务器,但是当我尝试执行脚本时,本地服务器可以工作,但 GUI 不想再回复一下。

脚本源代码如下:

https://github.com/Medshi8/Random_Gui/blob/main/testServer.py

尝试在单独的线程上执行该功能,例如:

import threading
....
localcnct = Button(CreatserverFrame, text="Creat Server", fg="green"  , command=threading.Thread(target=LocalServ).start)
localcnct.grid(row = 1, column = 2, rowspan= 2 , ipady = 10, ipadx = 5)

这应该允许您在除 tkinters 线程之外的单独线程上启动该函数,当您 运行 此 LocalServ() 时,它不会冻结 GUI。请记住,多次按下按钮会出现错误。

但是由于 GUI 从不响应,我不认为正在创建服务器(在创建过程中)。 GUI响应的时间,就是创建服务器的时间。

下面是一个简单的例子运行服务器在一个线程中:

import tkinter as tk
import threading
from http.server import HTTPServer, BaseHTTPRequestHandler

class Serv(BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)
        self.end_headers()
        self.wfile.write(b'Hello')

server = None

def LocalServ():
    global server
    def server_task():
        print('Starting server ...')
        httpd = HTTPServer(('localhost', 8000), Serv)
        httpd.serve_forever()

    # make sure only one server task is running
    if server is None:
        server = threading.Thread(target=server_task, daemon=True)
        server.start()

root = tk.Tk()
root.geometry('400x300')

tk.Button(root, text='Start Server', command=LocalServ).pack()

root.mainloop()