【问题标题】:Tkinter/TTK: How to determine if a ProgressBar reaches the maximum value?Tkinter / TTK:如何确定ProgressBar是否达到最大值?
【发布时间】:2016-08-11 17:10:48
【问题描述】:

我正在尝试制作一个简单的程序,当进度条使用 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,请尽量避免使用类和对象,我有点难以理解它们。

【问题讨论】:

    标签: python python-3.x tkinter ttk


    【解决方案1】:

    您可以通过指示每 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() 进度条,因为您应该自己更新值。在不确定模式下,条形图来回弹跳表示正在发生某些事情,这就是您需要 start() 它的原因。

    【讨论】:

    • 啊哈,我确信 if 语句是错误的。正如我猜测的那样,它需要一个功能。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-30
    • 2014-08-26
    • 2019-11-12
    • 2013-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多