Tkinter/TTK: 如何判断一个ProgressBar是否达到最大值?

Tkinter/TTK: How to determine if a ProgressBar reaches the maximum value?

我正在尝试制作一个简单的程序,当进度条使用 ttk 达到最大值时,将 "done" 打印到控制台。

示例:

from tkinter import *
import tkinter.ttk

root = Tk()

pb = tkinter.ttk.Progressbar(root, orient=HORIZONTAL, length=200, mode='determinate')
pb.pack()
pb.start()

if pb['value'] == 100: #This isn't correct it's just an example.
    pb.stop()
    print("Done")

root.mainloop()

我目前使用的是python 3.5.2,请尽量避免使用类和objects,我理解起来有点吃力。

您可以通过指示每 100 毫秒左右调用一个函数来自行更新该值,如下所示:

from tkinter import *
import tkinter.ttk

root = Tk()

pb = tkinter.ttk.Progressbar(root, orient=HORIZONTAL, length=200, mode='determinate')
pb.pack()

def task():
    pb['value'] += 1
    if pb['value'] >= 99:
        print("Done")
    else:
        root.after(100, task) # Tell the mainloop to run "task()" again after 100ms

# Tell the mainloop to run "task()" after 100ms
root.after(100, task)

root.mainloop()

您通常不会在确定模式下启动 () 进度条,因为您应该自己更新该值。在不确定模式下,条来回跳动以暗示正在发生某些事情,这就是为什么你需要 start() 它。