Python制作進(jìn)度條的四種方法總結(jié)
如果你之前沒(méi)用過(guò)進(jìn)度條,八成是覺(jué)得它會(huì)增加不必要的復(fù)雜性或者很難維護(hù),其實(shí)不然。要加一個(gè)進(jìn)度條其實(shí)只需要幾行代碼。

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

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

這個(gè)進(jìn)度條也提供了幾種選項(xiàng)。
相關(guān)文檔:https://tqdm.github.io/
Alive Progress
顧名思義,這個(gè)庫(kù)可以使得進(jìn)度條變得生動(dòng)起來(lái),它比原來(lái)我們見(jiàn)過(guò)的進(jìn)度條多了一些動(dòng)畫(huà)效果。
從代碼角度來(lái)說(shuō)比較相似:
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)
進(jìn)度條的外觀和預(yù)期差不多:

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

為了實(shí)現(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 應(yīng)用程序中的進(jìn)度條項(xiàng)目作者之前曾經(jīng)在 GitHub 上討論過(guò)「如何快速啟動(dòng) Python UI,然后使用 UI 創(chuàng)建比較工具」。
在這個(gè)項(xiàng)目里,作者還討論了一下如何集成進(jìn)度條。

代碼如下:
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()
沒(méi)錯(cuò),在 Python 腳本中使用進(jìn)度條只需要幾行代碼,一點(diǎn)也不復(fù)雜。有了進(jìn)度條,以后也不用再猜測(cè)腳本運(yùn)行的怎么樣了。
到此這篇關(guān)于Python制作進(jìn)度條的四種方法總結(jié)的文章就介紹到這了,更多相關(guān)Python制作進(jìn)度條內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python函數(shù)isalnum用法示例小結(jié)
isalnum()函數(shù)是Python中的一個(gè)內(nèi)置函數(shù),用于判斷字符串是否只由數(shù)字和字母組成,其內(nèi)部實(shí)現(xiàn)原理比較簡(jiǎn)單,只需遍歷字符串中的每一個(gè)字符即可,這篇文章主要介紹了Python函數(shù)isalnum用法介紹,需要的朋友可以參考下2024-01-01
基于PyTorch實(shí)現(xiàn)一個(gè)簡(jiǎn)單的CNN圖像分類器
本文記錄了一個(gè)簡(jiǎn)單的基于pytorch的圖像多分類器模型構(gòu)造過(guò)程,參考自Pytorch官方文檔、磐創(chuàng)團(tuán)隊(duì)的《PyTorch官方教程中文版》以及余霆嵩的《PyTorch 模型訓(xùn)練實(shí)用教程》。從加載數(shù)據(jù)集開(kāi)始,包括了模型設(shè)計(jì)、訓(xùn)練、測(cè)試等過(guò)程。2021-05-05
python中cv2.imread()和Image.open()的區(qū)別和聯(lián)系詳解
image.open和cv2.imread都是Python中用于讀取圖像文件的函數(shù),但是它們之間有一些區(qū)別,這篇文章主要給大家介紹了關(guān)于python中cv2.imread()和Image.open()的區(qū)別和聯(lián)系,需要的朋友可以參考下2024-07-07
Python實(shí)現(xiàn)計(jì)算文件夾下.h和.cpp文件的總行數(shù)
這篇文章主要介紹了Python實(shí)現(xiàn)計(jì)算文件夾下.h和.cpp文件的總行數(shù),本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-04-04
在Pycharm中對(duì)代碼進(jìn)行注釋和縮進(jìn)的方法詳解
今天小編就為大家分享一篇在Pycharm中對(duì)代碼進(jìn)行注釋和縮進(jìn)的方法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
python 字典 按key值大小 倒序取值的實(shí)例
今天小編就為大家分享一篇python 字典 按key值大小 倒序取值的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-07-07
Python實(shí)現(xiàn)自動(dòng)化網(wǎng)頁(yè)操作步驟
這篇文章主要介紹Python如何實(shí)現(xiàn)自動(dòng)化網(wǎng)頁(yè)操作,文中有詳細(xì)的流程步驟和代碼示例,對(duì)我們的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2023-06-06

