Python制作進度條的四種方法總結(jié)
如果你之前沒用過進度條,八成是覺得它會增加不必要的復雜性或者很難維護,其實不然。要加一個進度條其實只需要幾行代碼。

在這幾行代碼中,我們可以看看如何在命令行腳本以及 PySimpleGUI UI 中添加進度條。

下文將介紹 4 個常用的 Python 進度條庫:
Progress
第一個要介紹的 Python 庫是 Progress。
你只需要定義迭代的次數(shù)、進度條類型并在每次迭代時告知進度條。
import?timefrom?progress.bar? import?IncrementalBarmylist?=?[1,2,3,4,5,6,7,8] bar?=?IncrementalBar(?Countdown?,?max?=?len(mylist)) for?item?in?mylist:? ??bar.next()? ??time.sleep(1)? ??bar.finish()
Progress 實現(xiàn)的進度條效果如下:
Progressbar 的增量進度條
如果你不喜歡該進度條的格式,還可以從以下格式中挑選:
ProgressBar 支持的進度條類型。
相關(guān)文檔:https://pypi.org/project/progress/1.5/
tqdm
下面我們看一下 tqdm 庫。
和之前見過的庫差不多,這兩行代碼也非常相似,在設置方面有一點點不同:
import?timefrom?tqdm? import?tqdmmylist?=?[1,2,3,4,5,6,7,8] for?i?in?tqdm(mylist):? ??time.sleep(1)
tqdm 實現(xiàn)的進度條效果如下:

這個進度條也提供了幾種選項。
相關(guān)文檔:https://tqdm.github.io/
Alive Progress
顧名思義,這個庫可以使得進度條變得生動起來,它比原來我們見過的進度條多了一些動畫效果。
從代碼角度來說比較相似:
from?alive_progress?import?alive_barimport? timemylist?=?[1,2,3,4,5,6,7,8] with?alive_bar(len(mylist))?as?bar:? ??for?i?in?mylist:? ????bar()? ????time.sleep(1)
進度條的外觀和預期差不多:

這種進度條有一些與眾不同的功能,使用起來會比較有趣,功能詳情可見項目:https://github.com/rsalmei/alive-progress
PySimpleGUI
用 PySimpleGUI 得到圖形化進度條
我們可以加一行簡單的代碼,在命令行腳本中得到圖形化進度條。

為了實現(xiàn)上述內(nèi)容,我們需要的代碼是:
import?PySimpleGUI?as?sgimport? timemylist?=?[1,2,3,4,5,6,7,8] for?i,?item?in?enumerate(mylist):? ??sg.one_line_progress_meter(?This?is?my?progress?meter!?,?i+1,?len(mylist),??-key-?)? ??time.sleep(1)
PySimpleGUI 應用程序中的進度條項目作者之前曾經(jīng)在 GitHub 上討論過「如何快速啟動 Python UI,然后使用 UI 創(chuàng)建比較工具」。
在這個項目里,作者還討論了一下如何集成進度條。

代碼如下:
import?PySimpleGUI?as?sgimport? timemylist?=?[1,2,3,4,5,6,7,8] progressbar?=?[?[sg.ProgressBar(len(mylist),?orientation=?h?,?size=(51,?10),?key=?progressbar?)]] outputwin?=?[?[sg.Output(size=(78,20))]] layout?=?[?[sg.Frame(?Progress?,layout=?progressbar)],?[sg.Frame(?Output?,?layout?=?outputwin)],?[sg.Submit(?Start?),sg.Cancel()]] window?=?sg.Window(?Custom?Progress?Meter?,?layout) progress_bar?=?window[?progressbar?]?while?True:? ??event,?values?=?window.read(timeout=10)? ??if?event?==??Cancel??or?event?is?None:? ????break? ??elif?event?==??Start?:? ????for?i,item?in?enumerate(mylist):? ??????print(item)? ??????time.sleep(1)? ??????progress_bar.UpdateBar(i?+?1)window.close()
沒錯,在 Python 腳本中使用進度條只需要幾行代碼,一點也不復雜。有了進度條,以后也不用再猜測腳本運行的怎么樣了。
到此這篇關(guān)于Python制作進度條的四種方法總結(jié)的文章就介紹到這了,更多相關(guān)Python制作進度條內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
anaconda中安裝的python環(huán)境中沒有pip3的問題及解決
這篇文章主要介紹了anaconda中安裝的python環(huán)境中沒有pip3的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02
Python機器學習入門(六)之Python優(yōu)化模型
這篇文章主要介紹了Python機器學習入門知識,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-08-08
Python Pandas list列表數(shù)據(jù)列拆分成多行的方法實現(xiàn)
這篇文章主要介紹了Python Pandas list(列表)數(shù)據(jù)列拆分成多行的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-12-12

