Python制作进度条的几种方法
作者:宋宋讲编程 发布时间:2022-03-11 05:36:23
前言
如果你之前没用过进度条,八成是觉得它会增加不必要的复杂性或者很难维护,其实不然。要加一个进度条其实只需要几行代码。
from alive_progress import alive_bar; import time
在这几行代码中,我们可以看看如何在命令行脚本以及 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 支持的进度条类型。
相关文档:https://pypi.org/project/progress/1.5/
tqdm
下面我们看一下 tqdm 库。
和之前见过的库差不多,这两行代码也非常相似,在设置方面有一点点不同:
import timefrom tqdm
import tqdmmylist = [1,2,3,4,5,6,7,8]
for i in tqdm(mylist):
time.sleep(1)
tqdm 实现的进度条效果如下:
这个进度条也提供了几种选项。
相关文档:https://tqdm.github.io/
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)
进度条的外观和预期差不多:
这种进度条有一些与众不同的功能,使用起来会比较有趣,功能详情可见项目:https://github.com/rsalmei/alive-progress
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 脚本中使用进度条只需要几行代码,一点也不复杂。有了进度条,以后也不用再猜测脚本运行的怎么样了。
来源:https://blog.csdn.net/qiqi1220/article/details/128220243


猜你喜欢
- 本文列出了HTML4标签的默认样式列表,对网页设计者来说这个应该很有用。原文来自:W3C (http://www.w3.org/TR/CSS
- Hello, 大家好,又是我~ 大家有看过font set和一些要注意的基本问题以及通用字体族两篇文章后,应该对字体的基本有了一些了解。现
- Python2.7Mac OS抓取的是电影天堂里面最新电影的页面。链接地址: http://www.dytt8.net/html/gndy/
- 阅读目录• 下载MySQL免安装版• 配置MySQL数据库• MySQL环境变量• 安装MySQL数据库 公司服务器是Window
- Pytorch:dtype不一致RuntimeError: Expected object of scalar type Double bu
- python中可以使用下标索引来访问列表中的值,对列表进行切片即截取,也可以对列表的数据项进行修改或更新。使用下标索引来访问列表中的值,例如
- php屏蔽电话号码中间四位:Method 1:function hidtel($phone){  
- 今天自己写个楼层效果,有一点烦躁,小地方犯错误。各位大神来修改不足啊!!!<!DOCTYPE html><html lan
- channel首先明确一下channel的作用:用于go协程间的通信。go语言最大的特点就是支持高并发:goroutine和channel是
- 在python中我们可以使用requests模块来实现调用远程接口一:安装requests模块pip install requests二:使
- 定期分析表ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name]本
- 用javascript实现Base64编码—解决中文问题因javascript求出来的是Unicode要转换成Ansi后才能对它进行Base
- 很多小伙伴都会有这样的问题,说一个ip地址十分钟内之内注册一次,用来防止用户来重复注册带来不必要的麻烦逻辑:取ip,在数据库找ip是否存在,
- 使用 filters 实现 英文字母 转大写1、template :<di
- commit 粒度commit message 在工程开发中有很重要的作用。一个好的 message 不仅仅能够降低 reviewer 的心
- 本文介绍Python3使用PyMySQL连接数据库,并实现简单的增删改查。什么是PyMySQL?PyMySQL是Python3.x版本中用于
- 下面的例子演法了怎么样从协程里返回一个值:import asyncioasync def coroutine(): print(
- 本文实例为大家分享了python实现烟花小程序的具体代码,供大家参考,具体内容如下'''FIREWORKS SIMU
- 本文实例讲述了js实现简单的联动菜单效果。分享给大家供大家参考。具体如下:这是一个最简单的js联动菜单代码,在DW里可以自动生成,不想在DW
- 假如公司需要统计每个员工的个人信息,制定好模板后,由员工填写,然后发送到综合部进行汇总,在这种情况下,如果公司有上百位员工的信息需要统计,且