赞
踩
本文主要介绍Python tkinter 进度条Progressbar应用及示例。
目录
Python tkinter (2) —— Button标签
Python tkinter (8) ——Spinbox控件
Python tkinter (10) ——Combobox控件
Python tkinter (11) —— Frame控件
Python tkinter (12) —— Treeview控件
Python tkinter (15) —— PhotoImage
Progressbar 解释为进度条,主要当做一个工作进度的指针,在这个控件中会有一个指针,由此可以了解工作进度。
构造如下:
Progressbar(父对象, options, ...)
第一个参数:父对象,表示这个进度条将建立在哪一个窗口内
第二个参数:options,参数如下:
参数 | 含义 |
length | 进度条的长度,默认是100像素 |
mode | 可以有两种模式,下面作介绍 |
maximum | 进度条的最大值,默认是100像素 |
name | 进度条的名称,供程序参考引用 |
orient | 进度条的方向,可以是HORIZONTAL(默认) 或者是 VERTICAL |
value | 进度条的目前值 |
variable | 记录进度条目前的进度值 |
determinate:一个指针会从起点移至终点,通常当我们知道所需工作时间时,可以使用此模式,这是默认模式
indeterminate:一个指针会在起点和终点间来回移动,通常当我们不知道工作所需时间时,可以使用此模式
设置显示固定长度和固定进度的两个进度条,间隔高度20显示。
示例如下:
- import tkinter
- from tkinter import ttk
-
- tk = tkinter.Tk()
- tk.geometry('150x120')
-
- one = ttk.Progressbar(tk)
- one.pack(pady=20)
- # 进度值最大值
- one['maximum'] = 100
- # 进度值初始值
- one['value'] = 30
-
- # 横排 长度100 起点填充至终点
- two = ttk.Progressbar(tk, orient=tkinter.HORIZONTAL, length=100, mode='determinate')
- two.pack()
- two['maximum'] = 100
- two['value'] = 80
-
- tk.mainloop()
效果如下:
如果想要设计含动画效果的Progressbar,可以在按钮上绑定事件,
更新Progressbar 对象的value值时调用update()方法,
这时窗口可以依据value值重绘,就达到了动画效果。
在原来基础上引入time库
示例如下:
import time
示例如下:
- def show():
- for i in range(100):
- # 每次更新加1
- one['value'] = i + 1
- # 更新画面
- tk.update()
- time.sleep(0.05)
-
-
- one = ttk.Progressbar(tk)
- one.pack(pady=20)
- # 进度值最大值
- one['maximum'] = 100
- # 进度值初始值
- one['value'] = 0
-
- button = tkinter.Button(tk, text='开始', command=show)
- button.pack(pady=5)
-
- tk.mainloop()
执行结果:
每次增加一次amount,默认值是1.0。
在determinate模式下,指针不会超过maximum参数。
在indeterminate模式下,当指针达到maximum参数值的前一格时,指针会回到起点。
示例如下:
- import tkinter
- from tkinter import ttk
-
- tk = tkinter.Tk()
- tk.geometry('250x250')
-
- import time
-
- def show():
- while one.cget('value') <= one['maximum']:
- one.step(2)
- tk.update()
- print(one.cget('value'))
- time.sleep(0.05)
-
- one = tkinter.ttk.Progressbar(tk, length=200, orient=tkinter.HORIZONTAL)
- one.pack(pady=20)
-
- one['maximum'] = 100
- one['value'] = 0
-
- button = tkinter.Button(tk, text='触发', command=show)
- button.pack()
- tk.mainloop()
效果如下:
每隔interval时间移动一次指针。
interval的默认值是50ms,每次移动指针调用一次step(amount)。
在step()方法内的amount参数意义就是增值量
停止start()运行
示例如下:
- import tkinter
- from tkinter import ttk
-
- tk = tkinter.Tk()
- tk.geometry('250x250')
- import time
- def start():
- one.start()
-
- def stop():
- one.stop()
-
- one = tkinter.ttk.Progressbar(tk, length=200, orient=tkinter.HORIZONTAL)
- one.pack(pady=20)
- one['maximum'] = 100
- one['value'] = 0
- button1 = tkinter.Button(tk, text='开始', command=start)
- button1.pack()
-
- button2 = tkinter.Button(tk, text='停止', command=stop)
- button2.pack()
- tk.mainloop()
效果如下:
在这个模式下指针将左右移动,主要目的是让用户知道程序仍然在继续工作。
示例如下:
- import tkinter
- from tkinter import ttk
-
- tk = tkinter.Tk()
- tk.geometry('250x250')
-
-
- def start():
- one.start()
-
- one = ttk.Progressbar(tk, length=200, mode='indeterminate', orient=tkinter.HORIZONTAL)
- one.pack(pady=20)
-
- one['maximum'] = 100
- one['value'] = 0
-
- button1 = tkinter.Button(tk, text='开始', command=start)
- button1.pack()
-
- tk.mainloop()
效果如下:
本文主要介绍Python tkinter 进度条Progressbar应用及示例。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。