Python 实现进度条的六种方式

Python 实现进度条的六种方式

在 Python 编程中,经常需要在程序执行某些耗时操作时实时显示进度条,以提升用户体验和程序可读性。

本篇攻略将介绍 Python 实现进度条的常用技巧,其中会涉及到六种方式,包括:

  1. 在命令行窗口打印简单进度条
  2. 在命令行窗口使用第三方库给进度条增加颜色、样式等
  3. 使用 tqdm 库在控制台中实现进度条
  4. 使用 progressbar2 库实现进度条
  5. 使用 alive_progress 库实现进度条
  6. 在 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技术站

(2)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • Django分页功能的实现代码详解

    Django是一个流行的Python Web框架,提供了丰富的功能和工具,包括分页功能。分页功能可以将大量数据分成多个页面,以提高用户体验和性能。以下是Django分页功能的实现代码详解: 1. 安装Django 在使用Django分页功能之前,需要先安装Django。可以使用以下命令在命令行中安装Django: pip install django 2. …

    python 2023年5月15日
    00
  • python使用minimax算法实现五子棋

    Python使用Minimax算法实现五子棋 Minimax算法是一种常用的博弈树搜索算法,它可以用于实现五子棋等游戏的人工智能。在本文中,我们将介绍如何使用Python实现Minimax算法来实现五子棋的人工智能。我们分为以下几个步骤: 定义游戏状态 定义Minimax算法 示例说明 步骤1:定义游戏状态 在实现Minimax算法之前,我们定义游戏状态。在…

    python 2023年5月14日
    00
  • 详解Python PIL Image.show()方法

    Python PIL是一个强大的图像处理库,其中包含了许多函数和方法。其中,Image.show()方法是一个很常用的方法,它的作用是用系统默认的图像查看器展示当前图片。 方法介绍 PIL库的Image模块提供了显示图像的方法,在这个模块内,show()方法可以接收一个图像对象,并且用默认的可执行文件查看这个图像。 在使用show()方法之前,我们需要先安装…

    python-answer 2023年3月25日
    00
  • Python 3.8 新功能全解

    Python3.8新功能全解 随着Python 3.8的发布,它带来了许多新功能和改进。本篇文章将详细介绍Python 3.8的主要新功能和改进,以及如何使用它们。 格式化字符串字面值(F-strings) Python 3.8引入了格式化字符串字面值(F-strings),它是一种简单且直观的字符串格式化语法。F-strings使用类似于字符串插值的语法,…

    python 2023年5月13日
    00
  • Python 高级库15 个让新手爱不释手(推荐)

    Python高级库15个让新手爱不释手(推荐) Python是一种功能强大的编程语言,拥有许多高级库,可以帮助我们快速开发各种应用程序。本文将介绍15个Python高级库,这些库可以让新手爱不释手。 1. NumPy NumPy是Python中的一个科学计算库,用于处理大型多维数组和矩阵。它提供了许多数学函数和操作,可以用于数据分析、机器学习和科学计算等领域…

    python 2023年5月15日
    00
  • Python&Matlab实现灰狼优化算法的示例代码

    Python&Matlab实现灰狼优化算法的示例代码 灰狼优化算法(Grey Wolf Optimizer,GWO)是一种基于自然界中灰狼群体行为优化算法。该算法模拟了灰狼群体中的领袖、副领袖和普通狼的行为,通过不断地迭代找最优解。灰狼优化算法具有收敛速度快、全局搜索能力强等优点,在优化问题中得到了广泛的应用。 Python实现灰狼优化算法的示例代码…

    python 2023年5月14日
    00
  • Python响应对象text属性乱码解决方案

    Python 响应对象 text 属性乱码解决方案 在 Python 中,使用 requests 模块发送请求后,响应对象的 text 属性可能会出现乱码。以下是 Python 响应对象 text 属性乱码解决方案。 1. 指定编码方式 在使用 requests 模块发送请求时,可以通过设置响应对象的 encoding 属性来指定编码方式。以下是一个指定编码…

    python 2023年5月15日
    00
  • OpenCV+python手势识别框架和实例讲解

    下面是详细讲解“OpenCV+python手势识别框架和实例讲解”的完整攻略。 OpenCV+Python手势识别框架和实例讲解 介绍 手势识别技术在现代人机交互中扮演着越来越重要的角色。OpenCV是一个开源计算机视觉库,它可以帮助开发者轻松实现图像处理、计算机视觉和机器学习等领域中的功能。 本文将介绍如何使用OpenCV和Python实现简单的手势识别功…

    python 2023年6月6日
    00
合作推广
合作推广
分享本页
返回顶部