我需要显示一个不确定的进度条,以向用户指示正在发生的事情。我发现了很多示例,但是所有示例都由按钮操作,而没有一个示例显示执行功能时如何显示进度栏。另外,我想在功能启动时显示进度条,并在功能结束时将其消失,而无需用户按下任何按钮或关闭窗口。我的主要问题是,仅当我使用mainloop()
功能时才能显示进度条,在这种情况下,我的程序将被阻止,直到关闭窗口为止。
这是我的代码:
main.py
import time import ProgressBar print("start") print("sleep 5 seconds") pb = ProgressBar.ProgBar() time.sleep(5) pb.stop() print("end")
ProgressBar.py
from tkinter import *
from tkinter import ttk
class ProgBar(Frame):
def __init__(self):
Frame.__init__(self)
self.master.title("ProgressBar example")
self.grid(sticky=E+W+N+S)
self.pbar = ttk.Progressbar(self, orient="horizontal", length=300, mode="indeterminate", maximum=100)
self.pbar.grid(row=0, column=0, pady=2, padx=2, sticky=E+W+N+S, columnspan=3)
start()
def start(self):
self.pbar.start()
self.mainloop()
def stop(self):
self.pbar.stop()
self.destroy()
我需要显示一个不确定的进度条,以向用户指示正在发生的事情。我发现了很多示例,但是所有示例都由按钮操作,没有一个示例显示如何显示...
您需要在与tkinter的mainloop运行所在的线程不同的线程中调用该函数。您可以使用Python的threading
导入很容易地做到这一点: