【发布时间】:2018-10-27 16:28:02
【问题描述】:
我在 Python 中有一个进度条:
import os
def file_len(fname):
with open(fname) as f:
for i, l in enumerate(f):
pass
return i + 1
import progressbar
from time import sleep
bar = progressbar.ProgressBar(maxval=file_len(os.path.basename(__file__)), \
widgets=[progressbar.Bar('=', '[', ']'), ' ', progressbar.Percentage()])
bar.start()
for i in range(file_len(os.path.basename(__file__))):
bar.update(i+1)
sleep(0.1)
bar.finish()
进度条在视觉上按预期工作:它以条形显示进度及其后面的百分比。但是进度条的计算是错误的。
它首先以增加的百分比显示条形图,但当条形图为 100% 时,程序开始运行。我在我的代码中放置了几个“打印”定义,以查看当时代码的位置,但现在我首先看到百分比条增加到 100%,然后是代码中的第一个“打印”。在此打印之后,代码开始计算。
有人知道我在这里做错了什么吗?
问候,甘尼什
所以训练部分在 bar 为 100% 时开始。
【问题讨论】:
-
我猜你的
print语句在进度条显示代码之后? -
Jep,所以首先是进度条的代码,然后是打印语句。
-
我不确定我是否完全理解你想要什么;如果打印语句在进度条代码之后运行,您描述的行为不是预期的吗?
-
杰普我一开始是这么认为的。因此,我在脚本的开头添加了进度条代码的第一部分(直到 bar.start()),并将进度条代码的最后一部分添加到脚本的末尾。然后进度条显示: [ ] N/A%I: 。然后我知道我做错了什么,但不知道是什么..
-
您必须将进度条更新与真实代码联系起来;就目前而言,您只是在 sleep() 之间绘制了一个进度条,它并不代表任何实际的进度。
标签: python python-3.x tkinter progress-bar ttk