Tkinter / TTK:如何确定ProgressBar是否达到最大值?

时间:2016-08-11 17:10:49

标签: python python-3.x tkinter ttk

我试图制作简单的程序来打印"完成"当进度条使用ttk达到最大值时到控制台。

示例:

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,请尽量避免使用类和对象,对我来说理解起来有点困难。

1 个答案:

答案 0 :(得分:1)

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

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()

您通常不会以确定模式启动()进度条,因为您应该自己更新值。在不确定模式下,条形图来回反弹意味着发生了某些事情,这就是你需要启动它的原因。