Python显示程序进度---progressbar2用法详解(针对零编程基础)

官方文本介绍

网上查询progressbar的使用方法都是同一个套路,给出了官网上的代码示例,但是对于我这种基础薄弱的learner实在没看懂在具体的程序中到底怎么用,于是详细阅读官网介绍,汇总出此篇文章。

  • progressbar是一个用文本来显示程序运行进度的Python库。具体的显示格式通过各类widget(小部件)来控制。

  • pycharm中使用需要注意, sys.stdout or sys.stderr只能同时使用一个,否则会中断。

  • 常用场景为:显示下载进度、显示任务的执行进度

  • 类似功能的库:tqdm

  • 进度条的显示可以通过\n,\r来实现

  • 进度条与一般的print区别在哪里

print输出一个\n(换行符),因此输出结束后游标就移动到了下一行行首,然后继续后续程序。

进度条必须在原地输出,不能换行。怎么实现呢?输出(sys.stdout.write()实现)完毕后将游标移动到行首,继续输出;新的更长的进度条把短的覆盖掉,就形成了动画效果。

转义符r可以把游标移动到行首而不换行;转义符n把游标移动到行首并且换行。

Python中输出stdout(标准输出)可以使用sys.stdout.write(具体理解可见链接)

  • 通过sys.stdout.write()实现进度条

# 示例
import time,sys
for i in range(100):
    percent = i / 100
    sys.stdout.write("\r{0}{1}".format("|"*i , '%.2f%%' % (percent * 100)))
    sys.stdout.flush()
    time.sleep(1)

    
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • progressbar到底怎么用-简单用法

有了前面的基础,现在就搞明白怎么用progressbar这个lib了。

官网给了示范例子:

import time
import progressbar
p = progressbar.ProgressBar()
N = 1000
for i in p(range(N)):
    time.sleep(0.01)

    
    
  • 2
  • 3
  • 4
  • 5
  • 6

应用于for循环,

# 正常for循环
for i in range(N):
# 加上进度,就是将range(N)放到ProgressBar()中
for i in ProgressBar(range(N)):

    
    
  • 1
  • 2
  • 3
  • 4
  • progressbar高级点的用法(自己配置输出格式)

import time
import progressbar
bar = progressbar.ProgressBar(widgets=[ ' [', progressbar.Timer(), '] ,progressbar.Percentage(),' (', progressbar.ETA(), ') ',])
for i in bar(range(1000)):
    time.sleep(0.01)

    
    
  • 1
  • 2
  • 3
  • 4
  • 5

就是在progressbar.ProgressBar()中增加一些参数。

  • progressbar中常用的widgets

‘Timer’, # 计时器
‘ETA’, # 预计剩余时间
‘AbsoluteETA’, # 预计结束的绝对时间,耗时很长时使用较方便
‘Percentage’, # 百分比进度,30%
‘SimpleProgress’, # 计数进度,300/1000
‘Counter’, # 单纯计数
‘Bar’ # “#”号进度条

  • 实用案例

回测策略,遍历参数较多时,不知道需要运行多久,通过添加进度条更好的把控。

1550583034463

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Python的Tkinter中使用进度条控件并显示进度的百分比,可以按照以下步骤进行操作: 1. 导入Tkinter模块和ttk模块 ```python import tkinter as tk from tkinter import ttk ``` 2. 创建主窗口和进度条控件 ```python root = tk.Tk() progress = ttk.Progressbar(root, orient="horizontal", length=200, mode="determinate") ``` 其中,"orient"参数指定进度条的方向,"length"参数指定进度条的长度,"mode"参数指定进度条的类型。 3. 设定进度条的最大值和初始值 ```python progress["maximum"] = 100 progress["value"] = 0 ``` 4. 定义更新进度条的函数 ```python def update_progressbar(value): progress["value"] = value root.update_idletasks() ``` 其中,"update_idletasks()"方法用于刷新进度条的显示。 5. 定义计算进度的函数,并在其中调用更新进度条的函数 ```python def calculate_progress(): for i in range(101): update_progressbar(i) ``` 6. 启动计算进度的函数 ```python calculate_progress() ``` 完整代码示例: ```python import tkinter as tk from tkinter import ttk root = tk.Tk() progress = ttk.Progressbar(root, orient="horizontal", length=200, mode="determinate") progress["maximum"] = 100 progress["value"] = 0 progress.pack() def update_progressbar(value): progress["value"] = value root.update_idletasks() def calculate_progress(): for i in range(101): update_progressbar(i) calculate_progress() root.mainloop() ``` 在更新进度条的函数中,可以通过计算当前进度的百分比,将其显示在界面上,例如: ```python def update_progressbar(value): progress["value"] = value percentage = int((value/100)*100) progress_label.config(text="{}%".format(percentage)) root.update_idletasks() ``` 其中,"percentage"变量表示当前进度的百分比,"progress_label"变量表示用于显示进度百分比的标签控件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值