Tkinter的Progressbar进度组件,是ttk新增的组件之一,主要用于进度的展示,让用户可以直观的了解到程序的实时进度情况。
进度条主要有两种模式,一种是,指针从起点到终点,用于程序知道当前的进度或完成时间,这也是默认模式。另一种,指针会在起点和终点来回移动,用于程序不确定当前进度或完成时间。
常用属性
属性名 |
说明 |
length |
进度条长度 |
maximum |
进度条的最大值 默认100 |
mode |
模式 determinate(默认) indeterminate(来回移动) |
orient |
进度条方向 默认水平(horizontal) 垂直 (vertical) |
value |
进度条值 |
variable |
通过变量设置进度条值 取值IntVar\DoubleVar类型 |
常用方法
方法名 |
说明 |
start(interval) |
开始展示进度。传参设置隔多久执行一次step方法 默认是50ms |
step(amount) |
进度条数量增加量 默认为1 |
stop(amount) |
停止进度条 |
进度条组件示例代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
import threading
import time
from tkinter import *
from tkinter.ttk import *
win = Tk()
win.geometry("300x300")
val = IntVar(value=0)
p1 = Progressbar(win, variable=val)
p1.pack(side=TOP)
p2 = Progressbar(win, mode="indeterminate", orient=VERTICAL)
p2.pack()
def start():
p2.start()
b1.configure(state=DISABLED)
# 开一个线程 模拟进度 防止界面卡顿
threading.Thread(target=update_p1).start()
def update_p1():
global val
for i in range(100):
val.set(i)
time.sleep(0.1)
b1 = Button(text="开始", command=start)
b1.pack()
b2 = Button(text="停止", command=lambda: p2.stop())
b2.pack()
win.mainloop()
|
进度条组件示例