如何用Python製作漂亮的進度條!

數據分析那些事
7 min readJan 16, 2024

--

如果你之前沒用過進度條,八成是覺得它會增加不必要的複雜性或者很難維護,其實不然。要加一個進度條其實只需要幾行程式碼。

來源:菜鳥學Python

在這幾行程式碼中,我們可以看看如何在命令列指令碼以及 PySimpleGUI UI 中新增進度條。

下文將介紹 4 個常用的 Python 進度條庫:

Progress

第一個要介紹的 Python 庫是 Progress。

你只需要定義迭代的次數、進度條型別並在每次迭代時告知進度條。

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 實現的進度條效果如下:

Progressbar 的增量進度條

如果你不喜歡該進度條的格式,還可以從以下格式中挑選:

ProgressBar 支援的進度條型別。

相關檔案:

tqdm

下面我們看一下 tqdm 庫。

和之前見過的庫差不多,這兩行程式碼也非常相似,在設定方面有一點點不同:

import timefrom tqdm 
import tqdmmylist = [1,2,3,4,5,6,7,8]
for i in tqdm(mylist):
time.sleep(1)

tqdm 實現的進度條效果如下:

這個進度條也提供了幾種選項。

相關檔案:

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)

進度條的外觀和預期差不多:

這種進度條有一些與眾不同的功能,使用起來會比較有趣,功能詳情可見專案

PySimpleGUI

用 PySimpleGUI 得到圖形化進度條

我們可以加一行簡單的程式碼,在命令列指令碼中得到圖形化進度條。

為了實現上述內容,我們需要的程式碼是:

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 應用程式中的進度條專案作者之前曾經在 GitHub 上討論過「如何快速啟動 Python UI,然後使用 UI 建立比較工具」。

在這個專案裡,作者還討論了一下如何整合進度條。

程式碼如下:

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 指令碼中使用進度條只需要幾行程式碼,一點也不復雜。有了進度條,以後也不用再猜測指令碼執行的怎麼樣了。

※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

我是「數據分析那些事」。常年分享數據分析乾貨,不定期分享好用的職場技能工具。各位也可以關注我的Facebook,按讚我的臉書並私訊「10」,送你十週入門數據分析電子書唷!期待你與我互動起來~

文章推薦

常用的幾個經典Python模組

都2023年了,為什麼資料孤島問題還沒解決!

MySQL常用指令碼

商業分析應該怎麼做?一篇文章把思維和工具說清楚了!

會員流入流出視覺化的最佳選擇,桑基圖!

回顧十週入門數據分析系列文:

關注數據君的臉書:

我是「數據分析那些事」。常年分享數據分析乾貨,不定期分享好用的職場技能工具。按贊我的臉書,會有豐富資料包贈送唷!

--

--

數據分析那些事
數據分析那些事

Written by 數據分析那些事

這是一個專注於數據分析職場的內容部落格,聚焦一批數據分析愛好者,在這裡,我會分享數據分析相關知識點推送、(工具/書籍)等推薦、職場心得、熱點資訊剖析以及資源大盤點,希望同樣熱愛數據的我們一同進步! 臉書會有更多互動喔:https://www.facebook.com/shujvfenxi/

No responses yet