Python tkinter进度条控件(Progressbar)的使用
作者:风华明远 发布时间:2023-08-01 20:24:21
进度条的作用就是提示用户进度信息。可以有两种方式:
1)提示完成度
比如,正在安装程序的进度,一般是从0%到100%。
2)提示正在进行处理
比如正在处理数据内容,并不知道何时能够处理完毕。这个时候的进度是提示用户有任务正在进行。此类的提示没有完成度提示,只是进度条来回往复的移动,表示任务正在进行中。
进度条对象是定义在ttk中的,使用的时候需要引入ttk包。
1 属性
属性 | 描述 |
---|---|
cursor | 鼠标位于进度条内时的形状 |
length | 进度条长度 |
maximum | 进度条最大刻度值 |
mode | 进度条的模式。有两种:‘determinate'和'indeterminate' |
orient | 进度条的方向,有HORIZONTAL 和VERTICAL两种 |
style | 定义进度条的外观 |
takefocus | 是否可以通过Tab获得输入焦点 |
variable | 与进度条关联的变量。可以设置或获得进度条的当前值 |
value | 设置或者获取进度条的当前值 |
1.1 cursor
设置鼠标位于进度条内时的形状。具体的鼠标形状说明见3.3.6节。
import tkinter as tk
from tkinter import ttk
import time
def increment(*args):
for i in range(100):
p1["value"] = i+1
root.update()
time.sleep(0.1)
root = tk.Tk()
root.geometry('320x240')
p1 = ttk.Progressbar(root, length=200,cursor='spider',
mode="determinate",
orient=tk.HORIZONTAL)
p1.grid(row=1,column=1)
btn = ttk.Button(root,text="Start",command=increment)
btn.grid(row=1,column=0)
root.mainloop()
结果:
1.2 length
设置进度条长度。默认单位是像素,也可以是其他的单位。详细的单位说明见3.3.1节。
import tkinter as tk
from tkinter import ttk
import time
def increment(*args):
for i in range(100):
p1["value"] = i+1
root.update()
time.sleep(0.1)
root = tk.Tk()
root.geometry('360x240')
p1 = ttk.Progressbar(root, length='2i', mode="determinate",
orient=tk.HORIZONTAL)
p1.grid(row=1,column=1)
btn = ttk.Button(root,text="Start",command=increment)
btn.grid(row=1,column=0)
root.mainloop()
说明:长度是'2i',表示是2英寸长。
1.3 maximum
定义进度条的最大刻度。默认值是100。
import tkinter as tk
from tkinter import ttk
import time
def increment(*args):
for i in range(100):
p1["value"] = i+1
root.update()
time.sleep(0.1)
root = tk.Tk()
root.geometry('320x240')
p1 = ttk.Progressbar(root, length=200, mode="determinate",
maximum=200,orient=tk.HORIZONTAL)
p1.grid(row=1,column=1)
btn = ttk.Button(root,text="Start",command=increment)
btn.grid(row=1,column=0)
root.mainloop()
结果:
说明:进度条的最大刻度设为200,而在increment()回调函数中,只更新进度条的数值到100。当循环完成之后,进度条只更新了50%的刻度。
1.4 mode
设置进度条的模式。进度条有两种模式:‘determinate'和'indeterminate'
(1)determinate
对于'determinate'的模式,在程序的控制下,进度条的指示会从0开始,移动到最大刻度,然后停止。这种情况用于知道确切的进度数据。比如读取文件,是知道文件的大小的,可以用百分比来显示完成程度。
(2)indeterminate
对于'indeterminate',进度条的刻度是往复运动,表示某个处理过程正在进行中。这种情况用于不知道确切的进度数据,也就是说,不知道完成的状况。比如查询数据库返回大量的结果,程序事先无法确认会返回多少的结果。
import tkinter as tk
from tkinter import ttk
import time
def increment(*args):
p1.start()
root = tk.Tk()
root.geometry('320x240')
p1 = ttk.Progressbar(root, length=200, mode="indeterminate",
maximum=200,orient=tk.HORIZONTAL)
p1.grid(row=1,column=1)
btn = ttk.Button(root,text="Start",command=increment)
btn.grid(row=1,column=0)
root.mainloop()
说明:indeterminate的调用方式是使用进度条控件的start()方法。
1.5 orient
设置进度条的方向,有两种格式:水平(HORIZONTAL)和垂直(VERTICAL)。
1.6 style
设置进度条的外观。具体的用法见23.2节。
1.7 takefocus
设置进度条是否可以获得输入焦点。
1.8 variable
和进度条有关的一个变量IntVar(),可以用来设置或者获取进度条当前的数值。
1.9 value
进度条当前的数值。
2 函数
2.1 start(interval=None)
函数 | 描述 |
---|---|
start(interval=None) | 自动调整进度条的位置。通过启动一个循环定时事件,按照定义的步长调整进度条位置。定时器的间隔由interval参数来设定。间隔单位是毫秒.默认间隔是50毫秒。 |
step(amount=None) | 每次调整进度条的步长,默认是1.0 |
stop() | 停止定时器,停止进度条的自动调整 |
开始自动调整进度条,默认时间间隔是50毫秒。自动调整是依靠启动一个可循环的定时器实现的。每次的调整步长由step()函数实现。
2.2 step(amount=None)
定义每次调整进度条的步长。默认是1.0,可以通过设置amount设置其他数值。
2.3 stop
停止进度条的调整。
import tkinter as tk
from tkinter import ttk
import time
def start(*args):
p1.start(30)
def stop(*args):
value=p1['value']
p1.stop()
p1['value']=value
root = tk.Tk()
root.geometry('320x240')
p1 = ttk.Progressbar(root, length=200,
mode="indeterminate",
orient=tk.HORIZONTAL)
p1.grid(row=1,column=0,columnspan=2)
btn_start = ttk.Button(root,text="开始",
command=start,width=10)
btn_start.grid(row=0,column=0)
btn_stop = ttk.Button(root,text="停止",
command=stop,width=10)
btn_stop.grid(row=0,column=1)
root.mainloop()
来源:https://blog.csdn.net/weixin_42272768/article/details/100876613


猜你喜欢
- shell=True参数会让subprocess.call接受字符串类型的变量作为命令,并调用shell去执行这个字符串,当shell=Fa
- 本文大纲glob模块也是Python标准库中一个重要的模块,主要用来查找符合特定规则的目录和文件,并将搜索的到的结果返回到一个列表中。使用这
- asp之字符串函数示例用字符串函数对字符串进行截头去尾、大小写替换等操作。函数语 * 能LenLen(string|varname)返回字符串
- 1. 引言热力图,是一种通过对色块着色来显示数据的统计图表。绘图时,需指定颜色映射的规则。例如,较大的值由较深的颜色表示,较小的值由较浅的颜
- 如何更改 pandas dataframe 中两列的位置:把其中的某列移到第一列的位置。原来的 df 是:df = pd.read_csv(
- 本文讲述了Java数据类型与MySql数据类型对照表。分享给大家供大家参考,具体如下:类型名称显示长度数据库类型JAVA类型JDBC类型索引
- Python 编程语言已经成为 IT 中使用的最流行的语言之一。成功的一个原因是它可以用来解决各种问题。从网站开发到数据科学、机器学习到任务
- 1.合并1.1 结构合并将两个结构相同的数据合并1.1.1 concat函数函数配置:concat([dataFrame1, dataFra
- 从http://freeapi.ipip.net和http://ip-api.com/json/这两个网站提供的免费调用接口查询IP地址归属
- 今天逛论坛时看到有朋友问,是否有专门教Javascript的学校,这里想想把自己的一点建议和自己3年来的前端Javascript开发的经验跟
- 概述Python中的增强赋值是从C语言中借鉴出来的,所以这些格式的用法大多和C一致,本身就是对表达式的简写,即二元表达式和赋值语句的结合,比
- 方法一:<code class="language-python">""" 根
- 我就废话不多说了,直接上代码吧!import matplotlibmatplotlib.use('Agg')import o
- MySQL 复制详解及简单实例 主从复制技术在MySQL中被广泛使用,主要用于同步一台服务器上的数据至多台从服务器,可以用于实现负
- 前言:模拟学生成绩信息写入es数据库,包括姓名、性别、科目、成绩。示例代码1:【一次性写入10000*1000条数据】 【本人亲
- 环境准备python3.6PyCharm 2017.1.3Windows环境框架搭建selenium3.6安装方法:pip install
- 如下所示:pd.to_datetime(data[data['last_O_XLMC']==data['O_XLMC
- 前言d3.js 是一款上手容易的js类库,专门用于绘制svg图形图表,其关键理念为data-join 意即数据绑定.搞清这个概念非常重要,它
- function getTableDataByXML(inTable, inWindow) { var
- dispy,是用asyncoro实现的分布式并行计算框架。框架也是非常精简,只有4个组件,在其源码文件夹下可以找到:dispy.py (cl