gpt4 book ai didi

python - Tkinter 窗口显示(无响应)但代码正在运行

转载 作者:太空狗 更新时间:2023-10-29 23:59:31 25 4
gpt4 key购买 nike

我有一个程序在您单击操作按钮后会运行很长时间。当进程运行时,根窗口会说它没有响应,即使我知道该程序正在后台运行。该程序将发布给与我一起工作的几个人,我想确保他们在看到此程序时不会 panic 并关闭窗口。我的解决方案是在正在运行的进程的循环中设置一个 root.update,但我不确定这是最好的解决方法。

使用python 3.3

这是代码示例,因此您可以了解我在做什么,这是从主循环中调用的:

def combine(boxes_to, boxes_from, frame):
to_value,to_pos = gui.checkBoxes(boxes_to)
from_value,from_pos = gui.checkBoxes(boxes_from)
frame.destroy()

running = Label(root,text="Running please do not close..",font = (16))
running.pack()
root.update()
map_to = open("map_to",'r')
for line in map_to:
root.update()
process(line)


running.destroy()
map_to.close()
finish = Button(root, text="Done",command=gui.stop)
finish.pack()

最佳答案

虽然您可以在循环中调用 root.update(),但这仍然会产生一些(潜在的)不良副作用。

  1. 该程序可能运行缓慢,这意味着它需要很长时间才能响应用户输入。
  2. 您将只能执行这一项操作。任何其他操作都必须等待此操作完成。

作为替代方案,我建议您实现简单的多线程。 Python multithreading非常简单,并且可以避免这两个缺点。您将能够执行长时间运行的代码,同时仍然提供干净且响应迅速的 UI。

如果您的应用程序可以简单地并行化,您可以使用多线程来减少运行时间。前任。线程 1 处理条目 1-100,而线程 2 处理条目 101-200。

关于python - Tkinter 窗口显示(无响应)但代码正在运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18522171/

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