python实现进度条

python实现进度条

编程要点

# system.out是标准输出流,标准输出流是终端窗口,与python的print函数有一定的关联
# print(obj)实质就是调用sys.stdout.write(obj+'\n')
import sys
# 打印‘人生苦短,我用python’,并换行
print('人生苦短,我用python')
# write()参数最后加上'\n'时,与上一句print的换行效果是等价的
sys.stdout.write('人生苦短,我用python'+'\n')
# sys.stdout.write()要先将打印的内容放到缓冲区中,当缓冲区满了或程序结束才会输出
# 并不能立即将要打印的内容输出到终端,
# 如果需要强制输出到终端,可以使用sys.stdout.flush()语句刷新缓冲区,实现立即打印

编程实现

# -*- coding:utf-8 -*-
# author:wanglisha

# 显示一个进度条,并在进度条右端显示进度百分比
import sys
from time import sleep

# 定义一个进度条类,对进度条的属性和功能进行封装
class ProgressBar(object):
    # 初始化函数,设置进度条的总长度,最初长度,组成进度条的字符 (默认为█)
    def __init__(self, len, bar_char='█'):
        # 初始化进度条的总长度
        self.total_len = len
        # 设置组成进度条的字符
        self.bar_char = bar_char
        # 设置进度条起始长度为0
        self.cur_len = 0
        # 把终端输出sys.stdout 对象赋值给 self.write_direction
        self.write_direction = sys.stdout
        # 如果未给进度条总长度赋值,直接退出
        if not self.total_len:
            return
        # 设置vstr为45个‘-’
        vstr = '-'*45
        # 在终端上打印出相关信息
        self.write_direction.write('\n'+vstr+'进度条演示'+vstr)

    # 显示进度条函数,show_len是进度条最新长度
    def show(self, show_len):
        # 如果进度条最新长度大于进度条总长度,设置进度百分比100
        if show_len > self.total_len:
            percent_int = 100
        else:
            # python语法中‘/’是正常除法,返回的是浮点类型的商
            # ‘//’返回的是整数类型的商,可以理解为获取商的整数部分
            # 以下语句取得进度条最新长度与进度条总长度的百分比的整数值
            percent_int = (show_len*100) // self.total_len
        # 要显示进度条,这个进度条由percent_int个self.bar_char(进度条字符)组成
        cur_string = ("%s"%(self.bar_char))*percent_int
        # 进度条与后面要显示的百分比之间的内容,由(100-percent_int)个空格组成
        blank = ' '*(100 - percent_int)
        # 通过sys.stdout对象的write()函数向终端写入内容(内容暂时存在内存里)
        # 其中'\r'表示从当前开头重新覆盖地写
        self.write_direction.write('\r'+cur_string+blank+str(percent_int)+'%')
        # 通过flush()函数将内存的内容写到终端上
        self.write_direction.flush()
        # 将传入的进度条长度保存在self.cur_len中
        self.cur_len = show_len
        # 如果长度达到总长度,传入回车字符进行换行
        if percent_int == 100:
            self.write_direction.write('\n')

    # 处理进度条每次增加长度的函数,new_len是每次增加的长度
    def add_bar_len(self,new_len):
        # 将进度条当前长度增加new_len
        self.cur_len = self.cur_len + new_len
        # 显示进度条
        self.show(self.cur_len)

if __name__ == '__main__':
    # 进度条演示
    print('\n******************************************进度条演示*****************************************************')
    # 实例化进度条类,生成进度条对象,并设置总长度为200
    progressbar_obj = ProgressBar(len = 200)
    # 循环20次,每增加10,完成循环后,长度正好为200
    for i in range(20):
        sleep(0.6)
        # 每次增加长度10
        progressbar_obj.add_bar_len(10)

打包成exe

使用pyinstaller库,将python编程实现进度条的.py文件,打包成.exe文件,exe文件可直接发送给没有安装python的小伙伴直接使用。
步骤1:本地安装pyinstall库

pip install pyinstaller

步骤2:准备一个ico文件作为exe文件的图标
这里直接从网上搜索
步骤3:将ico和py文件放在本地目录下
注意,放的目录不要带中文,以免出现奇奇怪怪的现象
步骤4:cmd进入当前目录后,执行如下命令

pyinstaller -F -i XX.ico XXX.py

执行完毕,在当前文件中自动生成dist文件夹,想要的exe就在这个文件夹中

实际举例

生成一个setup.exe:
在这里插入图片描述
双击后显示进度条界面
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值