
1. 原理
在动画里连续的画面是由一帧帧单独的图片构成的。动态进度条即是如此,在同一行内连续播放不同的图案。 我们首先来使用 print() 函数来制作一个简易的进度条:
import time
import sys
n = 10
for i in range(n):
time.sleep(0.3)
sys.stdout.write('\r')
sys.stdout.write(str(i)*(i))
sys.stdout.flush()
sys.stdout.write('\n')
- 因为 python 中的标准输入输出默认是使用行缓冲的。而对于行缓冲来说,缓冲区读取到换行符 \n 或回车符 \r 时刷新缓冲区。所以我们需要使用 sys.stdout.flush() 函数在每次迭代时手动刷新缓冲区。
- 需要使用一个字符:回车符 \r。回车符的作用是回到行首,这时我们再输出字符将会覆盖同一行内已存在的字符。
2. 项目结构
- prog_class.py 文件定义了类 Prog
- progbar.py 定义了类 ProgBar
- progpercent.py 定义了类 ProgPercent
-
generator_factory.py 定义了函数 prog_percent() 及 prog_bar()。
- 类 ProgBar 和 prog_bar() 是用来提供进度条的
- 类 ProgPercent 和 prog_percent() 则提供进度百分比指示器。
3. 实现源码
4. 效果展示