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 ttktk = 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'] = 80tk.mainloop()

效果如下:

动画设计

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

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

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

引入time

在原来基础上引入time库

示例如下:

import time

具体实现

示例如下:

def show():for i in range(100):# 每次更新加1one['value'] = i + 1# 更新画面tk.update()time.sleep(0.05)one = ttk.Progressbar(tk)
one.pack(pady=20)
# 进度值最大值
one['maximum'] = 100
# 进度值初始值
one['value'] = 0button = tkinter.Button(tk, text='开始', command=show)
button.pack(pady=5)tk.mainloop()

执行结果:

start/step/stop

step(amount)

每次增加一次amount,默认值是1.0。

在determinate模式下,指针不会超过maximum参数。

在indeterminate模式下,当指针达到maximum参数值的前一格时,指针会回到起点。

示例如下:

import tkinter
from tkinter import ttktk = tkinter.Tk()
tk.geometry('250x250')import timedef 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'] = 0button = tkinter.Button(tk, text='触发', command=show)
button.pack()
tk.mainloop()

效果如下:

 

start(interval)

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

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

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

stop()

停止start()运行

示例如下:

import tkinter
from tkinter import ttktk = 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()

效果如下:

indeterminate模式

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

示例如下:

import tkinter
from tkinter import ttktk = 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'] = 0button1 = tkinter.Button(tk, text='开始', command=start)
button1.pack()tk.mainloop()

效果如下:

总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/458191.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

react中hook封装一个table组件

目录 react中hook封装一个table组件依赖CommonTable / index.tsx使用组件效果 react中hook封装一个table组件 依赖 cnpm i react-resizable --save cnpm i ahooks cnpm i --save-dev types/react-resizableCommonTable / index.tsx import React, { useEffect, useMemo, use…

VMware虚拟机安装openEuler系统(一)(2024)

目录 一、下载ISO镜像 二、开始创建虚拟机 通过实践是学习openEuler开源Linux系统的最佳方式。因此我们首先得搭建一个openEuler实战环境&#xff0c;文章是在Windows系统上使用VMware Workstation虚拟化软件&#xff0c;安装和学习openEuler开源Linux操作系统。 使用虚拟机…

新型RedAlert勒索病毒针对VMWare ESXi服务器

前言 RedAlert勒索病毒又称为N13V勒索病毒&#xff0c;是一款2022年新型的勒索病毒&#xff0c;最早于2022年7月被首次曝光&#xff0c;主要针对Windows和Linux VMWare ESXi服务器进行加密攻击&#xff0c;到目前为止该勒索病毒黑客组织在其暗网网站上公布了一名受害者&#x…

人工智能专题:量子汇编语言和量子中间表示发展白皮书

今天分享的是人工智能系列深度研究报告&#xff1a;《人工智能专题&#xff1a;量子汇编语言和量子中间表示发展白皮书》。 &#xff08;报告出品方&#xff1a;量子信息网络产业联盟&#xff09; 报告共计&#xff1a;78页 量子计算与量子编程概述 随着社会生产力的发展&am…

vue3 之 商城项目—home

home—整体结构搭建 根据上面五个模块建目录图如下&#xff1a; home/index.vue <script setup> import HomeCategory from ./components/HomeCategory.vue import HomeBanner from ./components/HomeBanner.vue import HomeNew from ./components/HomeNew.vue import…

手势检测跟踪解决方案

美摄科技&#xff0c;作为业界领先的人工智能技术提供商&#xff0c;致力于为企业提供先进的手势检测与跟踪解决方案&#xff0c;以推动企业在智能化、高效化的道路上阔步前行。 一、手势检测与跟踪技术的优势 手势检测与跟踪技术作为人机交互的重要一环&#xff0c;具有以下…

Flask 入门7:使用 Flask-Moment 本地化日期和时间

如果Web应用的用户来自世界各地&#xff0c;那么处理日期和时间可不是一个简单的任务。服务器需要统一时间单位&#xff0c;这和用户所在的地理位置无关&#xff0c;所以一般使用协调世界时&#xff08;UTC&#xff09;。不过用户看到 UTC 格式的时间会感到困惑&#xff0c;他们…

雨云EPYC7702服务器上线了!适合幻兽帕鲁开服的VPS!雨云EPYC7702高防VPS性能测评

雨云游戏云上线了AMD EPYC 7702的VPS服务器&#xff0c;中等水平的单核性能&#xff0c;适合开幻兽帕鲁和我的世界1.17以下版本的服务器。 AMD Epyc 7702是一款64核心128线程&#xff0c;基础频率2.00 GHz加速频率高达3.35 GHz处理器&#xff0c;凭借着7 nm工艺及新一代Rome (…

SpringBoot:@Profile注解和Spring EL

&#x1f3e1;浩泽学编程&#xff1a;个人主页 &#x1f525; 推荐专栏&#xff1a;《深入浅出SpringBoot》《java对AI的调用开发》 《RabbitMQ》《Spring》《SpringMVC》 &#x1f6f8;学无止境&#xff0c;不骄不躁&#xff0c;知行合一 文章目录 前言一、Prof…

5年前端仔的2023年终总结

突然发现已经有好几个月没有写过博客总结过什么&#xff0c;小小辩解一下&#xff0c;其实并不是笔者停止的学习和总结&#xff0c;随着在前端这个行业的逐年深入&#xff0c;渐渐的很多收获不再是像之前简单的技术点的确定性描述讲解了&#xff0c;而是某个领域的知识体系的串…

数智文旅:智慧文旅中的数字化转型

在数字化浪潮席卷全球的今天&#xff0c;旅游业作为传统服务业的代表&#xff0c;正面临着前所未有的转型压力与机遇。智慧文旅&#xff0c;作为旅游业与数字技术深度融合的产物&#xff0c;不仅标志着旅游业进入了全新的发展阶段&#xff0c;更预示着未来旅游业将朝着更加智能…

ruoyi-nbcio中xxl-job的安装与使用

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a; http://122.227.135.243:9666 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a; https://gitee.com/nbach…