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日

相关文章

  • Python如何生成随机数及random随机数模块应用

    Python是一种强大的编程语言,它可以通过内置的random模块来生成随机数。随机数在程序设计中非常重要,可以用于测试、模拟和盐值等多个方面。本文将详细讲解Python如何生成随机数及random随机数模块应用,并提供两个示例说明。 生成随机数的方法 Python中生成随机数主要有以下两种方法:1.使用random模块的函数;2.使用Python内置的模块…

    python 2023年5月14日
    00
  • Python 把序列转换为元组的函数tuple方法

    下面是详细讲解“Python把序列转换为元组的函数tuple方法”的完整攻略。 概述 在Python中,元组是一种不可变的序列类型,通常用于保存具有多个值的数据集。而序列则可以包含任意数据类型的有序集合。tuple()是Python语言中将序列转换为元组的方法。 语法 tuple()方法的语法如下:tuple(seq)其中,seq为要转换为元组的序列。 示例…

    python 2023年5月14日
    00
  • 详解Python 不完全伽马函数

    Python 不完全伽马函数是一个数学函数,用于描述伽马函数在交汇点(实轴正半轴上的负整数点)处的性质。下面是此函数的完整攻略: 什么是不完全伽马函数 不完全伽马函数是数学上的一个重要函数,与伽马函数密切相关。不完全伽马函数在数学、物理、统计学等领域中经常出现。 不完全伽马函数有两种类型:第一类不完全伽马函数和第二类不完全伽马函数。与伽马函数类似,这两种函数…

    python-answer 2023年3月25日
    00
  • Python FFT合成波形的实例

    我来详细讲解Python FFT合成波形的实例的完整攻略。 1. 背景介绍 FFT合成波形是指用已知的频谱数据(比如傅里叶变换之后的幅度和相位),来合成一个波形。这种技术的应用非常广泛,比如音频信号处理、图像处理等领域。在Python中,我们可以使用numpy库来进行FFT变换和波形合成。 2. 步骤说明 2.1 导入依赖库 首先,我们需要导入所需要的依赖库…

    python 2023年6月6日
    00
  • python使用期物处理并发教程

    Python使用期物处理并发教程 在Python中,我们可以使用期物(Futures)来处理并发。期物是一种异步编程模型,可以帮助我们更轻松地实现并发。本文将介绍如何使用Python处理并发,包括如何使用期物和提供两个示例代码。 步骤1:导入必要的库 在使用期物处理并发之前,我们需要先导入必要的库: import concurrent.futures imp…

    python 2023年5月15日
    00
  • Python爬虫实战之爬取某宝男装信息

    Python爬虫实战之爬取某宝男装信息 本文将介绍如何使用Python爬虫爬取某宝男装信息。我们将使用Python的requests库和BeautifulSoup库来实现爬虫功能。以下是完整攻略: 步骤一:分析网页结构 在编写爬虫之前,我们需要先分析网页的结构,确定需要爬取的信息。我们可以使用Chrome浏览器的开发者工具来分析网页结构。以下是分析结果: 网…

    python 2023年5月14日
    00
  • python传到前端的数据,双引号被转义的问题

    当Python传递数据到前端时,如果数据中含有双引号,那么这些双引号默认会被转义,这可能会导致前端无法正常解析这些数据。为了避免这种问题,可以使用以下方法解决: 在Python中使用json.dumps()函数对数据进行编码 可以使用Python的json模块中的dumps()方法,将Python对象转换为JSON字符串,JSON字符串中的特殊字符将被正确转…

    python 2023年6月3日
    00
  • Python YAML文件的读写操作详解

    Python YAML文件的读写操作详解 什么是 YAML? YAML 是 “YAML Ain’t Markup Language” 的递归缩写。它实际上是一种人类可读性更高,并且能够轻松被机器解析的标记语言。与用于创建网页和其他文档的标记语言 (例如 HTML 或 XML) 不同,YAML 的重点在于数据表示,而不是文档标记。 Python 中的 YAML…

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