python - 如何使进度条工作,它冻结窗口
问题描述
我尝试制作进度条,但它没有工作,而是冻结了 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()
如何使它工作!
解决方案
虽然答案似乎有效,但它会在 0.5 秒的time.sleep
时间间隔内锁定您的 GUI。
更直接的方法是使用root.after
:
...
def bar():
pbar['value']+=20
if pbar["value"]!=100:
root.after(500, bar)
pbar.pack()
...
推荐阅读
- mysql - 使用 Dockerfile 在 CentOS 7 上安装 MySQL 失败
- python - “时间戳”类型的参数不可迭代?
- python - 如何让 matplotlib 实际更新到最新版本?
- python - 尝试在 Lambda 函数中运行 ansible - 无法使依赖项达到可接受的上传大小
- javascript - Javascript:在 Reduce 函数中无法理解空初始化器
- r - 循环遍历数据表列并使用 for 循环应用 glm
- mongodb - 更好的方法创建 estructure 集合 mongodb,更新并插入子文档
- ios - 数据在 CollectionView 单元格中未正确显示?
- c# - Foreach 循环遍历字典导致 StackOverflowException
- python-3.x - 形状力图不显示图:shap.plots._force.AdditiveForceVisualizer