Python 实现进度条的六种方式
在 Python 编程中,经常需要在程序执行某些耗时操作时实时显示进度条,以提升用户体验和程序可读性。
本篇攻略将介绍 Python 实现进度条的常用技巧,其中会涉及到六种方式,包括:
- 在命令行窗口打印简单进度条
- 在命令行窗口使用第三方库给进度条增加颜色、样式等
- 使用
tqdm
库在控制台中实现进度条 - 使用
progressbar2
库实现进度条 - 使用
alive_progress
库实现进度条 - 在 Python GUI 应用程序中使用
progressbar
组件实现进度条
下面将逐一介绍这些方法。
1. 在命令行窗口打印简单进度条
在 Python 编程中,我们最简单的实现进度条的方式就是在命令行窗口中打印一个简单的字符串。
import time
def progress_bar():
for i in range(101):
print(f'\rProgress: {"#" * i}{"." * (100 - i)} {i}%', end='')
time.sleep(0.1)
if __name__ == '__main__':
progress_bar()
在上述实现中,我们通过在 print
中使用不断变化的字符串,模拟了进度条的效果。每次循环结束后,我们使用了 \r
回车符,将光标返回到行首,从而使得每次输出都在同一行上,形成进度条的效果。
2. 在命令行窗口使用第三方库给进度条增加颜色、样式等
Python 自带的字符串格式化方法有限,如果想让进度条样式更加漂亮,就需要使用第三方库,比如 colorama
库。
from colorama import init, Fore, Back, Style
import time
def colored_progress_bar():
init(autoreset=True)
for i in range(101):
percentage = Fore.GREEN + f'{i}%' + Fore.RESET
filled_length = int(i // 2)
bar = Back.WHITE + Fore.BLUE + '#' * filled_length + Fore.RESET + Back.RESET + '.' * (50 - filled_length)
print(f'\r{bar} {percentage}', end='')
time.sleep(0.1)
if __name__ == '__main__':
colored_progress_bar()
上述实现中,我们使用了 colorama
库来增加对文字和背景的样式控制,从而让进度条变得更加好看。
3. 使用 tqdm
库在控制台中实现进度条
相比于手动输出字符串,使用第三方库进行实现可以减少很多繁琐的操作。 tqdm
是其中一个非常优秀的实现,不仅支持在控制台中实时显示进度条,同时还支持多线程、多进程等场景。
from tqdm import tqdm
import time
def tqdm_progress_bar():
for i in tqdm(range(100)):
time.sleep(0.1)
if __name__ == '__main__':
tqdm_progress_bar()
在上述实现中,我们只需要将一个可迭代对象传递给 tqdm
函数,就可以在控制台中显示进度条了。
4. 使用 progressbar2
库实现进度条
progressbar2
库也是一个非常好用的进度条实现库,支持在命令行和图形界面中都能够展示进度条。
from progressbar import ProgressBar, Percentage, Timer
import time
def progressbar2_progress_bar():
widgets = ['Progress: ', Percentage(), ' ', Timer()]
pbar = ProgressBar(widgets=widgets)
for i in pbar(range(100)):
time.sleep(0.1)
if __name__ == '__main__':
progressbar2_progress_bar()
在上述实现中,我们先定义了要显示的进度条样式,然后将这些信息传递给 ProgressBar
对象。
5. 使用 alive_progress
库实现进度条
alive_progress
库是一个轻量级的进度条实现库,支持在控制台中实时显示进度条。
from alive_progress import alive_bar
import time
def alive_progress_bar():
with alive_bar(100) as bar:
for i in range(100):
bar()
time.sleep(0.1)
if __name__ == '__main__':
alive_progress_bar()
在上述实现中,我们使用 alive_bar
上下文管理器,循环结束自动关闭进度条。
6. 在 Python GUI 应用程序中使用 progressbar
组件实现进度条
除了在命令行中使用进度条外,还可以在 Python GUI 应用程序中使用 progressbar
组件,实现用户友好的进度条体验。
import tkinter as tk
import time
from tkinter import ttk
def gui_progress_bar():
root = tk.Tk()
root.title('进度条示例')
progressbar = ttk.Progressbar(root, orient='horizontal', length=400, mode='determinate')
progressbar.pack(pady=20)
root.update()
for i in range(101):
progressbar['value'] = i
root.update()
time.sleep(0.1)
root.destroy()
if __name__ == '__main__':
gui_progress_bar()
上述代码中,我们使用 tkinter
模块创建了一个简单的 GUI 应用程序,通过创建一个 Progressbar
对象,然后不断修改 progressbar['value']
的值,从而实现了进度条效果。
至此,我们介绍了 Python 实现进度条的六种方式。使用这些方法,我们可以大大提高编程效率,优化用户体验。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python 实现进度条的六种方式 - Python技术站