我有一个在后台运行的 Python 脚本,即运行此脚本时,最终用户无法看到脚本有多远,直到 30 分钟后完成或卡在某处。
我现在希望在 Windows 中为最终用户提供一个状态窗口,在达到脚本中的里程碑后显示文本(例如,当 Python 解释器到达脚本中的第 100 行时,文本“10% 的处理是状态窗口中显示完成”)。
我该如何实现这个?
我已经尝试过 tkinter 包。不幸的是,使用 tkinter 包打开的弹出窗口始终需要最终用户执行操作,即在弹出窗口中按“确定”或关闭弹出窗口,直到 Python 解释器继续执行执行下一行代码。但是,我想避免最终用户的任何操作,而只是在状态窗口中显示一些文本,而 Python 解释器则不受阻碍地继续。
这是一个使用 tqdm 库执行进度条的简单函数。
from tqdm.tk import tqdm
from time import sleep
window = Tk()
pbar = tqdm(total=30, tk_parent=window)
# Here you are defining 30 steps in your progress bar. You can adjust this to however many milestones you need.
def run_task():
for _ in range(30): #dummy job
sleep(0.1)
pbar.update(1) #we update the progress bar by 1.
run_task()
pbar.close()
#If you don't want the button. Do not create it.
在上面的示例中,进度条(pbar)本质上用作全局进度条。然后,您可以通过为每个步骤调用 pbar.update(x) 来更新 pbar。如果没有关于如何实施任务的基本代码,我无法提供比这更多的帮助。发布的问题线程建议线程等。所有这些都是很好的解决方案,具体取决于您的实际任务。