第七章 文本進度條的實現


文本進度條

大家都見過程加載的時候的文本進度條

進度條的原理是什么呢?

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("------執行結束------")

執行結果如下圖所示:

 

 單行動態刷新:

  刷新的關鍵是\r

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

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

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

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

如果我們在python自帶的idle里面運行將會有如下效果

原因是IDLE屏蔽了\r功能

在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("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c,a,b,dur),end='')
12     time.sleep(0.1)
13 print("\n"+"執行結束".center(scale//2,'-'))

執行后的運行結果如下圖所示:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM