文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python之tkinter进度条Progressbar用法解读

2023-05-19 14:24

关注

Progressbar 基本概念

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

构造方法如下:

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

参数:

参数含义
length进度条的长度默认是100像素
mode可以有两种模式,下面作介绍
maximum进度条的最大值默认是100像素
name进度条的名称,供程序参考引用
orient进度条的方向,可以是HORIZONTAL(默认) 或者是 VERTICAL
value进度条的目前值
variable记录进度条目前的进度值

mode参数

基本应用

例子:

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

含义如下:

例子:

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)

运行结果:

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯