Python tkinter (16) —— Progressbar

本文主要介绍Python tkinter 进度条Progressbar应用及示例。

目录

 系列文章

进度条Progressbar

基本概念

参数:

mode参数

基本应用

动画设计

引入time

具体实现

start/step/stop

step(amount):

start(interval):

stop():

indeterminate模式

总结


 

 系列文章

python tkinter窗口简单实现

Python tkinter (1) —— Label标签

Python tkinter (2) —— Button标签

Python tkinter (3) —— Entry标签

Python tkinter (4) —— Text控件

Python tkinter (5) 选项按钮与复选框

Python tkinter (6) ——Listbox

Python tkinter (8) ——Spinbox控件

Python tkinter (9) ——Menu控件

Python tkinter (10) ——Combobox控件

Python tkinter (11) —— Frame控件

Python tkinter (12) —— Treeview控件

Python tkinter (13) —— 事件

Python tkinter (14) —— 按键事件

Python tkinter (15) —— PhotoImage

进度条Progressbar

基本概念

Progressbar 解释为进度条,主要当做一个工作进度的指针,在这个控件中会有一个指针,由此可以了解工作进度。

构造如下:

Progressbar(父对象, options, ...)

参数:

第一个参数:父对象,表示这个进度条将建立在哪一个窗口内

第二个参数:options,参数如下:

参数

含义

length

进度条的长度,默认是100像素

mode

可以有两种模式,下面作介绍

maximum

进度条的最大值,默认是100像素

name

进度条的名称,供程序参考引用

orient

进度条的方向,可以是HORIZONTAL(默认) 或者是 VERTICAL

value

进度条的目前值

variable

记录进度条目前的进度值

mode参数

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()

效果如下:

Python tkinter (16) —— Progressbar_第1张图片

动画设计

如果想要设计含动画效果的Progressbar,可以在按钮上绑定事件,

更新Progressbar 对象的value值时调用update()方法,

这时窗口可以依据value值重绘,就达到了动画效果。

引入time

在原来基础上引入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()

执行结果:

Python tkinter (16) —— Progressbar_第2张图片

start/step/stop

step(amount)

每次增加一次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()

效果如下:

Python tkinter (16) —— Progressbar_第3张图片

 

start(interval)

每隔interval时间移动一次指针。

interval的默认值是50ms,每次移动指针调用一次step(amount)。

在step()方法内的amount参数意义就是增值量

stop()

停止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()

效果如下:

Python tkinter (16) —— Progressbar_第4张图片

indeterminate模式

在这个模式下指针将左右移动,主要目的是让用户知道程序仍然在继续工作。

示例如下:

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 (16) —— Progressbar_第5张图片

总结

本文主要介绍Python tkinter 进度条Progressbar应用及示例。

你可能感兴趣的:(#,Tkinter,python,开发语言,后端)