网络编程
位置:首页>> 网络编程>> Python编程>> Python tkinter进度条控件(Progressbar)的使用

Python tkinter进度条控件(Progressbar)的使用

作者:风华明远  发布时间:2023-08-01 20:24:21 

标签:Python,tkinter,进度条

进度条的作用就是提示用户进度信息。可以有两种方式:
1)提示完成度
比如,正在安装程序的进度,一般是从0%到100%。

2)提示正在进行处理
比如正在处理数据内容,并不知道何时能够处理完毕。这个时候的进度是提示用户有任务正在进行。此类的提示没有完成度提示,只是进度条来回往复的移动,表示任务正在进行中。
进度条对象是定义在ttk中的,使用的时候需要引入ttk包。

1 属性


属性描述
cursor鼠标位于进度条内时的形状
length进度条长度
maximum进度条最大刻度值
mode进度条的模式。有两种:‘determinate'和'indeterminate'
orient进度条的方向,有HORIZONTAL 和VERTICAL两种
style定义进度条的外观
takefocus是否可以通过Tab获得输入焦点
variable与进度条关联的变量。可以设置或获得进度条的当前值
value设置或者获取进度条的当前值


1.1 cursor

设置鼠标位于进度条内时的形状。具体的鼠标形状说明见3.3.6节。


import tkinter as tk
from tkinter import ttk
import time
def increment(*args):
   for i in range(100):
       p1["value"] = i+1
       root.update()
       time.sleep(0.1)
root = tk.Tk()
root.geometry('320x240')
p1 = ttk.Progressbar(root, length=200,cursor='spider',
                    mode="determinate",
                    orient=tk.HORIZONTAL)
p1.grid(row=1,column=1)
btn = ttk.Button(root,text="Start",command=increment)
btn.grid(row=1,column=0)
root.mainloop()

结果:

Python tkinter进度条控件(Progressbar)的使用

1.2 length

设置进度条长度。默认单位是像素,也可以是其他的单位。详细的单位说明见3.3.1节。


import tkinter as tk
from tkinter import ttk
import time
def increment(*args):
   for i in range(100):
       p1["value"] = i+1
       root.update()
       time.sleep(0.1)
root = tk.Tk()
root.geometry('360x240')
p1 = ttk.Progressbar(root, length='2i', mode="determinate",
                    orient=tk.HORIZONTAL)
p1.grid(row=1,column=1)
btn = ttk.Button(root,text="Start",command=increment)
btn.grid(row=1,column=0)
root.mainloop()

说明:长度是'2i',表示是2英寸长。

1.3 maximum

定义进度条的最大刻度。默认值是100。


import tkinter as tk
from tkinter import ttk
import time
def increment(*args):
   for i in range(100):
       p1["value"] = i+1
       root.update()
       time.sleep(0.1)
root = tk.Tk()
root.geometry('320x240')
p1 = ttk.Progressbar(root, length=200, mode="determinate",
                    maximum=200,orient=tk.HORIZONTAL)
p1.grid(row=1,column=1)
btn = ttk.Button(root,text="Start",command=increment)
btn.grid(row=1,column=0)
root.mainloop()

结果:

Python tkinter进度条控件(Progressbar)的使用

说明:进度条的最大刻度设为200,而在increment()回调函数中,只更新进度条的数值到100。当循环完成之后,进度条只更新了50%的刻度。

1.4 mode

设置进度条的模式。进度条有两种模式:‘determinate'和'indeterminate'
(1)determinate
对于'determinate'的模式,在程序的控制下,进度条的指示会从0开始,移动到最大刻度,然后停止。这种情况用于知道确切的进度数据。比如读取文件,是知道文件的大小的,可以用百分比来显示完成程度。
(2)indeterminate
对于'indeterminate',进度条的刻度是往复运动,表示某个处理过程正在进行中。这种情况用于不知道确切的进度数据,也就是说,不知道完成的状况。比如查询数据库返回大量的结果,程序事先无法确认会返回多少的结果。


import tkinter as tk
from tkinter import ttk
import time
def increment(*args):
   p1.start()
root = tk.Tk()
root.geometry('320x240')
p1 = ttk.Progressbar(root, length=200, mode="indeterminate",
                    maximum=200,orient=tk.HORIZONTAL)
p1.grid(row=1,column=1)
btn = ttk.Button(root,text="Start",command=increment)
btn.grid(row=1,column=0)
root.mainloop()

说明:indeterminate的调用方式是使用进度条控件的start()方法。

1.5 orient

设置进度条的方向,有两种格式:水平(HORIZONTAL)和垂直(VERTICAL)。

1.6 style

设置进度条的外观。具体的用法见23.2节。

1.7 takefocus

设置进度条是否可以获得输入焦点。

1.8 variable

和进度条有关的一个变量IntVar(),可以用来设置或者获取进度条当前的数值。

1.9 value

进度条当前的数值。

2 函数

2.1 start(interval=None)


函数

描述

start(interval=None)

自动调整进度条的位置。通过启动一个循环定时事件,按照定义的步长调整进度条位置。定时器的间隔由interval参数来设定。间隔单位是毫秒.默认间隔是50毫秒。

step(amount=None)

每次调整进度条的步长,默认是1.0

stop()

停止定时器,停止进度条的自动调整


开始自动调整进度条,默认时间间隔是50毫秒。自动调整是依靠启动一个可循环的定时器实现的。每次的调整步长由step()函数实现。

2.2 step(amount=None)

定义每次调整进度条的步长。默认是1.0,可以通过设置amount设置其他数值。

2.3 stop

停止进度条的调整。


import tkinter as tk
from tkinter import ttk
import time
def start(*args):
   p1.start(30)
def stop(*args):
   value=p1['value']
   p1.stop()
   p1['value']=value    
root = tk.Tk()
root.geometry('320x240')
p1 = ttk.Progressbar(root, length=200,
                    mode="indeterminate",
                    orient=tk.HORIZONTAL)
p1.grid(row=1,column=0,columnspan=2)
btn_start = ttk.Button(root,text="开始",
                      command=start,width=10)
btn_start.grid(row=0,column=0)
btn_stop = ttk.Button(root,text="停止",
                     command=stop,width=10)
btn_stop.grid(row=0,column=1)
root.mainloop()

来源:https://blog.csdn.net/weixin_42272768/article/details/100876613

0
投稿

猜你喜欢

  • 和网友们讨论了数组取交集的方法,下面是两个实现arr1=["1","5","6"
  • 最近看到一个词叫css reset。什么叫做css reset呢?我理解为重置css,也就是重置默认样式。我在HTML下的默认样式中讲到,一
  • Dean Edwards 最近有篇文章很精彩,忍不住在这里翻译下。-- Split --很多 Javascript 框架都提供了自定义事件(
  • 原文:http://www.htmldog.com/guides/htmlintermediate/badtags/十六 有害的标签 Bad
  • 这个话题是应腾讯ISD同仁之邀在WebReBuild三周年交流会上做的主题分享。由于临场等原因有些问题当时没有讲明白,回来后按原有思路形成了
  • 《用户研究角度看设计》系列是淘宝的用户研究团队在可用性测试之后的点滴思考。在每次与淘宝用户的直接接触、观察用户的操作之后,作为体验分析师的我
  • 在Oracle SQL的where子句中传入字符类型参数'19-11月-08',使得可以直接和日期类型比较,或者转换一下同日
  • 为什么使用事务 当对多个表进行更新的时候,某条执行失败。为了保持数据的完整性,需要使用事务回滚。 显示设置事务  代码如下:beg
  • 奥运来了,三大门户网站都加上了奥运主题。加上下面代码你的网站也拥有奥运主题了:<style type="text/
  • 最近尝试了mysql的最新版本5.5.581.最新发布的mysql 5.5.8没有适合solaris 9的版本;这个在安装时需要注意2.它发
  • 惊叹于老外的发现 《CSS Background image on html image element?》,自己从没关注过,也没想过如此的
  • 如何写入超长的字符串?    我们可使用Command写入,来完成大容量的字符串的操作: dim&n
  • 由于计算机软件的非法复制,通信的泄密、数据安全受到威胁。一般为了安全,会要求将数据库名称、密码等信息进行加密。所以加密在开发过程中是经常使用
  • 07年,我是极力推崇网站规范制作,好处很多,对商业,对用户,对设计师。我们走了两年,现在有了一定的成效,我们也看到了规范所带来的好处和便利。
  • 字符串的IndexOf()方法搜索在该字符串上是否出现了作为参数传递的字符串,如果找到字符串,则返回字符的起始位置 (0表示第一个字符,1表
  • 一、'建立register.asp 代码如下:<%@ language=vbscript %>&nb
  • 上回 说到“大屏幕浏览页面的良好体验,本就应该用户自己调整窗口。”根据屏幕不同大小,缩小窗口出横向滚动条在所难免,但理想情况下,页面应该能适
  • 在Web开发的时候,经常会遇到的一种情况就是浏览器提示脚本运行时间过长,停止还是继续,无论你选择什么,相信你都会想尽一切办法让这个对话框远离
  • 在数据库开发过程中,当你检索的数据只是一条记录时,你所编写的事务语句代码往往使用SELECT INSERT 语句。但是我们常常会遇到这样情况
  • 对数据库的管理常规就是进行预防性的维护,以及修复那些出现问题的内容。进行检查和修复通常具有四个主要的任务:1. 对表进行优化2. 对表进行分
手机版 网络编程 asp之家 www.aspxhome.com