Python-函数处理期间的tkinter显示进度栏

问题描述 投票:0回答:1

我需要显示一个不确定的进度条,以向用户指示正在发生的事情。我发现了很多示例,但是所有示例都由按钮操作,而没有一个示例显示执行功能时如何显示进度栏。另外,我想在功能启动时显示进度条,并在功能结束时将其消失,而无需用户按下任何按钮或关闭窗口。我的主要问题是,仅当我使用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()

我需要显示一个不确定的进度条,以向用户指示正在发生的事情。我发现了很多示例,但是所有示例都由按钮操作,没有一个示例显示如何显示...

python tkinter ttk
1个回答
0
投票

您需要在与tkinter的mainloop运行所在的线程不同的线程中调用该函数。您可以使用Python的threading导入很容易地做到这一点:

© www.soinside.com 2019 - 2024. All rights reserved.