首页 > 解决方案 > 如何使进度条工作,它冻结窗口

问题描述

我尝试制作进度条,但它没有工作,而是冻结了 tkinter 窗口,我也尝试关闭它,但它冻结了窗口

from tkinter import *
from tkinter.ttk import *
import time

root = Tk()


pbar = Progressbar(root, orient = HORIZONTAL,
                       length = 100, mode = 'determinate')


def bar():
    pbar['value'] = 20
    time.sleep(0.5)

    pbar['value'] = 40
    time.sleep(0.5)

    pbar['value'] = 60
    time.sleep(0.5)

    pbar['value'] = 80
    time.sleep(0.5)

    pbar['value'] = 100

pbar.pack()

Button(root, text = 'Start Bar', command = bar).pack()

root.mainloop()

如何使它工作!

标签: pythontkinterprogress-bar

解决方案


虽然答案似乎有效,但它会在 0.5 秒的time.sleep时间间隔内锁定您的 GUI。

更直接的方法是使用root.after

...

def bar():
    pbar['value']+=20
    if pbar["value"]!=100:
        root.after(500, bar)

pbar.pack()

...

推荐阅读