第七章 文本进度条的实现

Posted chy8

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第七章 文本进度条的实现相关的知识,希望对你有一定的参考价值。

文本进度条

大家都见过程加载的时候的文本进度条

进度条的原理是什么呢?

1、采用字符串方式打印可以动态变化的文本进度条

2、进度条需要能在一行中逐渐变化

问题分析:

如何获取一个文本进度条的变化时间呢?

1、采用sleep()模拟一个持续的进度

2、似乎不那么难

简单的开始:

 1 #TextProBarV1.py
 2 import time
 3 scale = 10
 4 print("------执行开始------")
 5 for i in range(scale+1):
 6     a = * * i
 7     b = . * (scale - i)
 8     c = (i/scale)*100
 9     print("{:^3.0f}%[{}->{}]".format(c,a,b))
10     time.sleep(0.1)
11 print("------执行结束------")

执行结果如下图所示:

技术分享图片

 

 单行动态刷新:

  刷新的关键是

1、刷新的本质是:用后打印的字符覆盖之前打印的字符

2、不能换行:print()需要被控制

3、需要回退:打印后光标退回到之前的位置

1 #TextProBarV2.py
2 import time
3 for i in range(101):
4     print("
{:3}%".format(i), end="")
5     time.sleep(0.1)

如果我们在python自带的idle里面运行将会有如下效果

技术分享图片

原因是IDLE屏蔽了 功能

在cmd命令行中运行即可

技术分享图片

可以看到如上代码只有百分比数字显示,并不是我们常见的完整的进度条,我们继续完善代码:

 1 #TextProBarV3.py
 2 import time
 3 scale = 50
 4 print("执行开始".center(scale//2, "-"))
 5 start = time.perf_counter()
 6 for i in range(scale+1):
 7     a = * * i
 8     b = . * (scale - i)
 9     c = (i/scale)*100
10     dur = time.perf_counter() - start
11     print("
{:^3.0f}%[{}->{}]{:.2f}s".format(c,a,b,dur),end=‘‘)
12     time.sleep(0.1)
13 print("
"+"执行结束".center(scale//2,-))

执行后的运行结果如下图所示:

技术分享图片

 

以上是关于第七章 文本进度条的实现的主要内容,如果未能解决你的问题,请参考以下文章

关于VB.NET进度条的实例

用于 onActivityCreated 中通用图像加载器的片段中进度条的 NullPointerException

带有进度条的按钮 android

关于VB.NET进度条的实例

[WinFrom]下载文件并显示进度条的实现代码

Ajax实现带进度条的文件上传