Python之tkinter进度条Progressbar用法解读
作者:qq_1471587327 发布时间:2023-07-15 17:14:57
Progressbar 基本概念
Progressbar 可以解释为进度条,主要是当做一个工作进度的指针,在这个控件中会有一个指针,由此指针可以了解工作进度
构造方法如下:
Progressbar(父对象, options, ...)
参数:
第一个参数:父对象,表示这个进度条将建立在哪一个窗口内
第二个参数:
options
,参数如下
参数 | 含义 |
---|---|
length | 进度条的长度默认是100像素 |
mode | 可以有两种模式,下面作介绍 |
maximum | 进度条的最大值默认是100像素 |
name | 进度条的名称,供程序参考引用 |
orient | 进度条的方向,可以是HORIZONTAL(默认) 或者是 VERTICAL |
value | 进度条的目前值 |
variable | 记录进度条目前的进度值 |
mode参数
determinate
:一个指针会从起点移至终点,通常当我们知道所需工作时间时,可以使用此模式,这是默认模式indeterminate
:一个指针会在起点和终点间来回移动,通常当我们不知道工作所需时间时,可以使用此模式 Progressbar
基本应用
例子:
import tkinter
import tkinter.ttk
root = 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'] = 80
root.mainloop()
运行结果:
注意:现在进度条还不能动!
Progressbar 动画设计
如果想要设计含动画效果的Progressbar,可以在每次更新Progressbar 对象的value值时调用update()
方法,这时窗口可以依据value值重绘,这样就可以达到动画效果
例子:
import time
import tkinter
import tkinter.ttk
def 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'] = 0
button = 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 = 10000
progressbarOne = 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 time
import tkinter
import tkinter.ttk
def 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'] = 100
progressbarOne['value'] = 0
button = tkinter.Button(root, text='Running', command=show)
button.pack(pady=5)
root.mainloop()
运行结果:
使用start()方法启动动画,单击stop按钮停止
例子:
import tkinter
import tkinter.ttk
def 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'] = 100
progressbarOne['value'] = 0
buttonRun = 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)
运行结果:
来源:https://blog.csdn.net/qq_44168690/article/details/105092516


猜你喜欢
- 实现效果效果如图,只识别一定距离内的物体哈哈哈哈哈哈哈哈哈,但我不知道这有什么用实现代码import pyrealsense2 as rsi
- 在本篇文章中,我们将探讨如何使用YOLOv5车牌识别系统开发一个Web应用,以及如何创建一个车牌识别API供其他开发者使用。我们将介绍Fla
- 网上关于这方面的文章有很多,重复的东西本文不再赘述,仅提供思路,并解释一些其他文章讲述模糊的地方。 1、使用meta标签,这也是普
- 七牛云存储的 Python 语言版本 SDK(本文以下称 Python-SDK)是对七牛云存储API协议的一层封装,以提供一套对于 Pyth
- 例如下面这段代码 { var temp = "12"; } alert(temp); //输出 12 如果按照通常的编程
- Python支持多种图形界面的第三方库,包括:wxWidgetsQtGTKTkinter: Tkinter 模块(Tk 接口)是 Pytho
- 需求细化:1.身份证必须能够通过身份证校验程序。2.通过查询,发现身份证号码是有国家标准的,标准号为 GB 11643-1999 可以从百度
- 网上搜了很多方法都不奏效,研究了一天,发现通过以下的配置可以完美支持 'URL_MODEL' => 2 的情况了 lo
- 我就废话不多说了,大家还是直接看代码吧~# 用一行代码实现for循环初始化数组o = 10b = [ o + u for u in rang
- 配置连接数据库DATABASES = { 'default': { 'ENGI
- 大家都知道连续的英文或数字能是容器被撑大,不能根据容器的大小自动换行,网页设计初学者可能不知道怎么处理,下面是CSS如何将他们换行的方法!对
- python现在的版本,主要是python2和python3两个大版本,这两个版本有很大的不同。当我们在自己电脑上同时安装了python2.
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitiona
- 导出单个表mysqldump -u user -p dbname tablename > db.sql导入单个表mysql>dr
- 有这样一个要求,它要创建一个SQL Server查询,其中包括基于事件时刻的累计值。典型的例子就是一个银行账户,因为你每一次都是在不同的时间
- 本文主要介绍 SQLServerExpress2008不用第三方工具调试T-SQL语句,经过本文的介绍,用SQLSERVER2008 Man
- 我们通常会使用 apt-get或者是pip来安装包,但是这两者的安装路径是不一样的,区别如下:如果使用pip或者pip3安装,则第三方包在:
- 文章slice介绍append的机制slice tricksgo dataslicearray的语法: [4]int{1,2,3,4}, [
- 本文实例讲述了CI框架教程之优化验证码机制。分享给大家供大家参考,具体如下:验证码机制在CI框架中是通过一个辅助函数captcha()进行实
- 一、join函数(一)参数使用说明描述Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。语法join()