В настоящее время у меня есть код ниже, который можно использовать в качестве демонстрации. Код настроен для создания окна Tkinter с кнопкой. Когда кнопка нажата, она запускает HttpServer на локальном хосте. Проблема, с которой я сталкиваюсь, заключается в том, что графический интерфейс переходит в состояние «заморожено / остановлено / разбито», и я не понимаю, почему. Я понимаю, что 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()