gpt4 book ai didi

python - 发生套接字循环时 Tkinter 无法工作

转载 作者:行者123 更新时间:2023-11-28 23:01:19 24 4
gpt4 key购买 nike

拜托,我的代码需要帮助:

def start():
def start_tkinter():
global main,l
main.destroy()
main=Tk()
l=Listbox(main)
f1=Frame(main)
e=Entry(f1)
b1=Button(main,text="Stop",command=parar)
l.pack(side=TOP)
f1.pack(side=BOTTOM)
e.pack(side=LEFT)
b1.pack(side=RIGHT)
main.update()
start_server()

def start_server():
HOST, PORT = "localhost", 9999
server = SocketServer.UDPServer((HOST, PORT), MyUDPHandler)
server.serve_forever()
start_tkinter()

当我开始循环时,Tkinter 卡住并且我无法使用它。拜托,我需要一个解决方案。

最佳答案

你是对的。本质上,您需要两个并行运行的无限循环:您需要一个为 GUI 提供服务,另一个为套接字服务器提供服务。您唯一的选择是使用两个线程或两个进程。*

要记住的主要事情是 Tkinter 需要在主线程中运行,并且您不能直接从其他线程访问 Tkinter 对象,因为 Tkinter 不是线程安全的。如果您希望套接字线程与 Tkinter 交互,则需要引入某种消息传递机制

*这些不是您唯一的选择,但它们是最实用的。当我需要从套接字读取数据时,我通常会编写一些 Tcl 代码以在底层 Tcl 解释器中运行,因为 Tcl 的文件事件模型非常强大。您失去了线程实现的复杂性,代价是必须进行一些 Tcl 编程。但我离题了。

关于python - 发生套接字循环时 Tkinter 无法工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11197936/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com