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

效果如下:

动画设计

如果想要设计含动画效果的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()

执行结果:

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

效果如下:

 

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

效果如下:

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 进度条Progressbar应用及示例。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

QT 范例阅读:系统托盘 The System Tray Icon example

main.cpp QApplication app(argc, argv);//判断系统是否支持 系统托盘功能if (!QSystemTrayIcon::isSystemTrayAvailable()) {QMessageBox::critical(0, QObject::tr("Systray"),QObject::tr("I couldnt detect any system tray ""on this system.&qu…

一文掌握SpringBoot注解之@Configuration知识文集(6)

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…

ionic报错:Cannot read properties of undefined (reading ‘classList‘)

报错信息&#xff1a; [ionic/vue Warning]: The view you are trying to render for path /tabs/tab1 does not have the required <ion-page> component. Transitions and lifecycle methods may not work as expected.See https://ionicframework.com/docs/vue/navig…

fx-82es软升级至fx-991es整理

fx-82es和fx-991es在硬件上采用的是相同的流水线设计。fx-82es为了降低成本或出于其他考虑&#xff0c;卡西欧在其主板上去掉了一些以微积分为主的功能 也就是说fx-82es理论上是有可能升级到fx-991es的&#xff0c;硬件上进行升级之前有人尝试成功过了&#xff0c;但是有一定风…

30s速通String——从JVM内存 到相关方法

0.深度理解String&#xff08;初学者可后面再看&#xff09; 1.JVM理解两种初始化String方式 1.1直接初始化 栈中保存变量s1,s2&#xff0c;而变量保存“abc”在方法区的地址 这里当“abc”具有唯一性&#xff0c;字符串常量区无此字符串&#xff0c;我们就产生一个新内存“…

【动态规划】【子序列除重】【C++算法】1987不同的好子序列数目

作者推荐 【动态规划】【状态压缩】【2次选择】【广度搜索】1494. 并行课程 II 本文涉及知识点 动态规划汇总 LeetCode1987:不同的好子序列数目 给你一个二进制字符串 binary 。 binary 的一个 子序列 如果是 非空 的且没有 前导 0 &#xff08;除非数字是 “0” 本身&…

EasyRecovery2024永久免费版电脑数据恢复软件下载

EasyRecovery数据恢复软件是一款非常好用且功能全面的工具&#xff0c;它能帮助用户恢复各种丢失或误删除的数据。以下是关于EasyRecovery的详细功能介绍以及下载步骤&#xff1a; EasyRecovery-mac最新版本下载:https://wm.makeding.com/iclk/?zoneid50201 EasyRecovery-win…

AD9361多片同步设计方法

本文基于ZC706FMCOMMS5的平台&#xff0c;介绍了多片AD9361同步的方法。并将该设计移植到自行设计的ZYNQ70354片AD9361(实现8路同步收发)的电路板上。本设计采用纯逻辑的方式&#xff0c;仅使用了ZYNQ芯片的PL部分。 9361多芯片同步主要包括基带同步和射频同步两大块任务。其中…

maven插件docker-maven-plugin打包镜像并发布到dockerHub

文章目录 前言一、使用maven插件制作docker镜像二、发布到dockerHub总结 前言 如果我们的项目要在docker中运行&#xff0c;那么就必须要把我们的项目生成docker镜像&#xff0c;如果要实现远程安装&#xff0c;也就必须要把镜像发布到远程仓库里&#xff0c;如果我们没有自己…

旭华智能水文遥测终端机RTU

SV-RT8588低功耗测控终端&#xff0c;可采集、存储监测点传感器/仪表数据&#xff0c;通过4G/网口等通讯方式上传至监管平台&#xff0c;产品采用高性能32位处理器和工业级无线模块&#xff0c;接口类型丰富配置灵活&#xff0c;能满足不同场景下的各种需求&#xff1b;低功耗设…

JavaEE企业级应用软件开发—Spring框架入门学习笔记(一)

一、认识框架 实际开发中&#xff0c;随着业务的发展&#xff0c;软件系统变得越来越复杂&#xff0c;如果所有的软件都从底层功能开始开发&#xff0c;那将是一个漫长而繁琐的过程。此外&#xff0c;团队协作开发时&#xff0c;由于没有统一的调用规范&#xff0c;系统会出现大…

Vue3.4+element-plus2.5 + Vite 搭建教程整理

一、 Vue3Vite 项目搭建 说明&#xff1a; Vue3 最新版本已经基于Vite构建&#xff0c;关于Vite简介&#xff1a;Vite 下一代的前端工具链&#xff0c;前端开发与构建工具-CSDN博客 1.安装 并 创建Vue3 应用 npm create vuelatest 创建过程可以一路 NO 目前推荐使用 Vue R…

Django前后端分离之后端实践2

小实践&#xff1a;实现用户登录、注销及ORM管理功能、事务开启小实践 models.py class Books(models.Model):id models.CharField(primary_keyTrue,max_length20,verbose_name"图书ID")name models.CharField(max_length20,verbose_name图书名称)status models…

MySQL 小技巧:利用 xtrabackup 完全备份,增量备份及还原

案例&#xff1a;利用 xtrabackup 8.0 完全备份,增量备份及还原 MySQL8.0 在面对海量数据时&#xff0c;我们无法做到每天全量备份&#xff0c;因此 只能每周做一次全量备份。 而每天的话则进行增量备份&#xff0c;确保数据安全。 注意点&#xff1a;MySQL 8.0.26 版本对应需要…

基于Springboot的考编论坛网站的设计与实现(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的考编论坛网站的设计与实现&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层…

Netty重点——ByteBuf特别篇(十五)

ByteBuf为什么好用 在网络编程中&#xff0c;基本都是基于TCP报文的字节流的操作&#xff0c;所以Java的NIO又新增了ByteBuffer&#xff0c;只不过Java原生的ByteBuffer&#xff0c;非常难操作&#xff0c;也不能扩容缩容&#xff0c;所以Netty又重新封装了自己的Bytebuf&#…

力扣经典题:相交链表

题目分析&#xff1a;两个链表如果相交且不存在环&#xff0c;那么这两个链表从相交节点往后的节点都相同&#xff0c;所以&#xff0c;遍历一个链表&#xff0c;在遍历时不断遍历另一个链表&#xff0c;只要相等就可以返回了 struct ListNode *getIntersectionNode(struct Li…

2024智慧城市新纪元:引领未来,重塑都市生活

随着科技的飞速发展和数字化转型的不断深入&#xff0c;2024年智慧城市领域迎来了全新的发展格局。 这一年&#xff0c;智慧城市的建设更加注重人性化、可持续性和创新性&#xff0c;为城市居民带来了前所未有的便捷与舒适。以下将重点关注智慧城市的几个核心内容&#xff0c;…

LeetCode:14.最长公共前缀

14. 最长公共前缀 - 力扣&#xff08;LeetCode&#xff09; 目录 题目&#xff1a; 思路&#xff1a; 代码有限注释&#xff1a; 每日表情包&#xff1a; 题目&#xff1a; 思路&#xff1a; 仅有一种&#xff0c;LeetCode的四种解法&#xff0c;三种都是来水的&#…

单片机学习笔记---串口通信(1)

目录 通信的基本概念 通信的方式 1.按照数据传送的方式&#xff0c;可分为串行通信和并行通信。 1.1串行通信 1.2并行通信 2.按照通信的数据同步方式&#xff0c;又可以分为异步通信和同步通信。 2.1 异步通信 2.2同步通信 3.按照数据的传输方向&#xff0c;又可以分为…