这篇教程Python之tkinter进度条Progressbar用法解读写得很实用,希望能帮到您。
Progressbar 基本概念Progressbar 可以解释为进度条,主要是当做一个工作进度的指针,在这个控件中会有一个指针,由此指针可以了解工作进度 构造方法如下: Progressbar(父对象, options, ...) 参数: - 第一个参数:父对象,表示这个进度条将建立在哪一个窗口内
- 第二个参数:
options ,参数如下
参数 | 含义 |
---|
length | 进度条的长度默认是100像素 | mode | 可以有两种模式,下面作介绍 | maximum | 进度条的最大值默认是100像素 | name | 进度条的名称,供程序参考引用 | orient | 进度条的方向,可以是HORIZONTAL(默认) 或者是 VERTICAL | value | 进度条的目前值 | variable | 记录进度条目前的进度值 |
mode参数 determinate :一个指针会从起点移至终点,通常当我们知道所需工作时间时,可以使用此模式,这是默认模式indeterminate :一个指针会在起点和终点间来回移动,通常当我们不知道工作所需时间时,可以使用此模式 Progressbar
基本应用例子: import tkinterimport tkinter.ttkroot = tkinter.Tk()root.geometry('150x120')progressbarOne = tkinter.ttk.Progressbar(root)progressbarOne.pack(pady=20)# 进度值最大值progressbarOne['maximum'] = 100# 进度值初始值progressbarOne['value'] = 20# 横排 长度200 起点移至终点progressbarTwo = tkinter.ttk.Progressbar(root, orient=tkinter.HORIZONTAL, length=200, mode='determinate')progressbarTwo.pack(pady=20)# 进度值最大值progressbarTwo['maximum'] = 100# 进度值初始值progressbarTwo['value'] = 80root.mainloop() 运行结果: 注意:现在进度条还不能动!
Progressbar 动画设计如果想要设计含动画效果的Progressbar,可以在每次更新Progressbar 对象的value值时调用update() 方法,这时窗口可以依据value值重绘,这样就可以达到动画效果 例子: import timeimport tkinterimport tkinter.ttkdef show(): for i in range(100): # 每次更新加1 progressbarOne['value'] = i + 1 # 更新画面 root.update() time.sleep(0.05)root = tkinter.Tk()root.geometry('150x120')progressbarOne = tkinter.ttk.Progressbar(root)progressbarOne.pack(pady=20)# 进度值最大值progressbarOne['maximum'] = 100# 进度值初始值progressbarOne['value'] = 0button = tkinter.Button(root, text='Running', command=show)button.pack(pady=5)root.mainloop() 运行结果: 例子: 模拟真实下载,下载总量是10000B, 每次下载500B def show(): # 设置进度条的目前值 progressbarOne['value'] = 0 # 设置进度条的最大值 progressbarOne['maximum'] = maxbyte # 调用loading方法 loading()def loading(): # 改变变量属性 global byte # 每次运行500B byte += 500 # 设置指针 progressbarOne['value'] = byte if byte < maxbyte: # 经过100ms后再次调用loading方法 progressbarOne.after(100, loading)root = tkinter.Tk()root.geometry('150x120')# 设置下载初值byte = 0# 设置下载最大值maxbyte = 10000progressbarOne = tkinter.ttk.Progressbar(root)progressbarOne.pack(pady=20)button = tkinter.Button(root, text='Running', command=show)button.pack(pady=5)root.mainloop() 运行结果:
Progressbar 的方法 start()/step()/stop()含义如下: start(interval) :每隔interval时间移动一次指针。interval的默认值是50ms,每次移动指针调用一次step(amount)。在step()方法内的amount参数意义就是增值量step(amount) :每次增加一次amount,默认值是1.0,在determinate模式下,指针不会超过maximum参数。在indeterminate模式下,当指针达到maximum参数值的前一格时,指针会回到起点stop() :停止start()运行
例子: import timeimport tkinterimport tkinter.ttkdef show(): while progressbarOne.cget('value') <= progressbarOne['maximum']: progressbarOne.step(2) root.update() print(progressbarOne.cget('value')) time.sleep(0.05)root = tkinter.Tk()root.geometry('150x120')progressbarOne = tkinter.ttk.Progressbar(root, length=200, mode='determinate', orient=tkinter.HORIZONTAL)progressbarOne.pack(pady=20)progressbarOne['maximum'] = 100progressbarOne['value'] = 0button = tkinter.Button(root, text='Running', command=show)button.pack(pady=5)root.mainloop() 运行结果: 使用start()方法启动动画,单击stop按钮停止 例子: import tkinterimport tkinter.ttkdef run(): progressbarOne.start()def stop(): progressbarOne.stop()root = tkinter.Tk()root.geometry('150x120')progressbarOne = tkinter.ttk.Progressbar(root, length=200, mode='determinate', orient=tkinter.HORIZONTAL)progressbarOne.pack(padx=5, pady=10)progressbarOne['maximum'] = 100progressbarOne['value'] = 0buttonRun = tkinter.Button(root, text='Run', width=6, command=run)buttonRun.pack(padx=10, pady=5, side=tkinter.LEFT)buttonStop = tkinter.Button(root, text='Stop', width=6, command=stop)buttonStop.pack(padx=10, pady=5, side=tkinter.RIGHT)root.mainloop() 运行结果:
indeterminate 模式在这个模式下指针将左右移动,主要目的是让用户知道程序仍然在继续工作 例子: progressbarOne = tkinter.ttk.Progressbar(root, length=200, mode='indeterminate', orient=tkinter.HORIZONTAL) 运行结果:
总结以上为个人经验,希望能给大家一个参考,也希望大家多多支持wanshiok.com。 Python Pandas创建Dataframe数据框的六种方法汇总 一文详解如何使用Python批量拼接图片 |