Python Progressbar(PyPi)- 显示随update()变化的自定义文本

2 投票
1 回答
3198 浏览
提问于 2025-04-17 08:07

嘿,我正在使用pypi上的progressbar这个包,我非常喜欢它。不过我遇到了一个问题,就是我还没找到办法显示自定义文本。我的意思是,当我调用pbar.update()的时候,想要显示的文本能够变化。

举个例子,如果我在电脑上递归扫描文件,我希望进度条能显示当前正在处理的文件名。

widgets = [CustomText(), ' ', Percentage(), ' ', Bar('/'), ' ', RotatingMarker()]
pbar = ProgressBar(widgets=widgets, maxval=1000)
pbar.start()

pbar.update(0, "custom_string")

像这样的效果对我来说最好。不过因为更新函数只接受一个数字,我不太确定怎么实现这样的功能,而不需要修改进度条的库本身。

提前谢谢你!

1 个回答

10

我尝试在 FormatLabel 这个小部件里用 update 方法来改变标签的内容,但对我来说没用。不过,换成一个全新的 FormatLabel 对象就能成功了:

from progressbar import *
import time

widgets = [FormatLabel(''), ' ', Percentage(), ' ', Bar('/'), ' ', RotatingMarker()]
progressbar = ProgressBar(widgets=widgets, maxval=10)
progressbar.start()
for i in range(0, 11):
    widgets[0] = FormatLabel('<filename-{0}>'.format(i))
    progressbar.update(i)
    time.sleep(.5)
progressbar.finish()

撰写回答