介绍6种Python酷炫进度条

本文详细介绍了6种Python中用于显示进度的酷炫方法,适合在长运行任务中提升用户体验,程序员不妨收藏备用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

介绍6种Python进度条,有需要的可以自行查看!

"""
Python各种进度条测试文件
参考链接:https://mp.weixin.qq.com/s/Ev0JRSNdqTs-cE1Zs2N1NQ
"""
import sys
import time

from tqdm import tqdm
from progress.bar import IncrementalBar
from progress.bar import Bar
from alive_progress import alive_bar
import PySimpleGUI as sg


class ProgressBar:
    def __init__(self):
        """
        使用Python3测试各种进度条
        """
        pass

    def ordinary_progress_bar(self):
        """
        1. 普通进度条:在代码迭代运行中可以自己进行统计计算,并使用格式化字符串输出代码运行进度
        """
        print('=' * 10 + '开始下载' + '=' * 10)
        for i in range(1, 101):
            print('\r', end='')
            print(f'Download Process:{i}%', '▊' * (i // 2), end='')
            sys.stdout.flush()
            time.sleep(0.05)
        print()
        print('下载结束'.center(24, '='))

    def time_progress_bar(self):
        """
        2. 带时间的进度条:导入time模块来计算代码运行的时间,加上代码迭代进度使用格式化字符串来输出代码运行进度
        """
        scale = 50
        print('开始下载'.center(24, '='))
        star_time = time.perf_counter()
        # print(star_time)
        for i in range(scale + 1):
            a = '=' * i
            b = '.' * (scale - i)
            c = (i / scale) * 100
            dur = time.perf_counter() - star_time
            print('\r{:^3.0f}%[{}->{}]{:.2f}s'.format(c, a, b, dur), end='')
            time.sleep(0.1)
        print('\n' + '下载结束'.center(24, '='))

    def tqdm_progress_bar(self):
        """
        3. tqdm进度条:这是一个专门生成进度条的工具包,可以使用pip在终端进行下载,当然还能切换进度条风格
        安装:pip install tqdm
        简介:tqdm就是这个进度条最常用的一个方法,里面存一个可迭代对象
        相关文档:https://tqdm.github.io/、https://github.com/tqdm/tqdm
        """
        print('开始下载'.center(24, '='))
        for i in tqdm(range(500), ncols=100, desc='Download', colour='green'):
            # 模拟你的任务
            time.sleep(0.01)
        print('下载结束'.center(24, '='))

    def progress_bar(self):
        """
        4. progress进度条:你只需要定义迭代的次数、进度条类型并在每次迭代时告知进度条即可
        安装:pip install progress
        相关文档:https://pypi.org/project/progress/、https://github.com/verigak/progress
        注意事项:PyCharm中运行不会正常显示,需要到命令行界面运行
        """
        # mylist = [1, 2, 3, 4, 5, 6, 7, 8]
        # bar = IncrementalBar('Download', max=len(mylist))
        # for item in mylist:
        #     bar.next()
        #     time.sleep(0.5)
        #     bar.finish()

        bar = Bar('Download', max=20, fill='▊', suffix='%(percent)d%% - %(elapsed)ds')
        for i in range(20):
            time.sleep(0.1)
            bar.next()
        bar.finish()

    def alive_progress_bar(self):
        """
        5. alive_progress进度条:顾名思义,这个库可以使得进度条变得生动起来,它比原来我们见过的进度条多了一些动画效果
        安装:pip install alive-progress
        相关文档:https://github.com/rsalmei/alive-progress
        注意事项:PyCharm中运行不会正常显示,需要到命令行界面运行
        """
        print('开始下载'.center(24, '='))
        with alive_bar(100, title='Download', bar='blocks', spinner='message_scrolling') as bar:
            for i in range(100):
                time.sleep(0.1)
                bar()
        print('下载结束'.center(24, '='))

    def GUI_progress_bar(self):
        """
        6. 可视化进度条:
        安装:pip install pysimplegui
        相关文档:https://pysimplegui.readthedocs.io/en/latest/
        """
        mylist = [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(0.5)


if __name__ == '__main__':
    pb = ProgressBar()
    # pb.ordinary_progress_bar()
    # pb.time_progress_bar()
    pb.tqdm_progress_bar()
    # pb.progress_bar()
    # pb.alive_progress_bar()
    # pb.GUI_progress_bar()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值