对python GUI实现完美进度条的示例详解


Posted in Python onDecember 13, 2018

在用python做一个GUI界面时,想搞一个进度条实时显示下载进度,但查阅很多博客,最后的显示效果都类似下面这种:

对python GUI实现完美进度条的示例详解

这种效果在CMD界面看着还可以,但放到图形界面时就有点丑了,所以我用Canvas重新做了一个进度条,完美满足了我的要求,看着也比较舒服。

import time
import threading
from tkinter import *
 
 
def update_progress_bar():
	for percent in range(1, 101):
		hour = int(percent/3600)
		minute = int(percent/60) - hour*60
		second = percent % 60
		green_length = int(sum_length * percent / 100)
		canvas_progress_bar.coords(canvas_shape, (0, 0, green_length, 25))
		canvas_progress_bar.itemconfig(canvas_text, text='%02d:%02d:%02d' % (hour, minute, second))
		var_progress_bar_percent.set('%0.2f %%' % percent)
		time.sleep(1)
 
 
def run():
	th = threading.Thread(target=update_progress_bar)
	th.setDaemon(True)
	th.start()
 
 
top = Tk()
top.title('Progress Bar')
top.geometry('800x500+290+100')
top.resizable(False, False)
top.config(bg='#535353')
 
# 进度条
sum_length = 630
canvas_progress_bar = Canvas(top, width=sum_length, height=20)
canvas_shape = canvas_progress_bar.create_rectangle(0, 0, 0, 25, fill='green')
canvas_text = canvas_progress_bar.create_text(292, 4, anchor=NW)
canvas_progress_bar.itemconfig(canvas_text, text='00:00:00')
var_progress_bar_percent = StringVar()
var_progress_bar_percent.set('00.00 %')
label_progress_bar_percent = Label(top, textvariable=var_progress_bar_percent, fg='#F5F5F5', bg='#535353')
canvas_progress_bar.place(relx=0.45, rely=0.4, anchor=CENTER)
label_progress_bar_percent.place(relx=0.89, rely=0.4, anchor=CENTER)
# 按钮
button_start = Button(top, text='开始', fg='#F5F5F5', bg='#7A7A7A', command=run, height=1, width=15, relief=GROOVE, bd=2, activebackground='#F5F5F5', activeforeground='#535353')
button_start.place(relx=0.45, rely=0.5, anchor=CENTER)
 
top.mainloop()

显示效果如下:

对python GUI实现完美进度条的示例详解

以上这篇对python GUI实现完美进度条的示例详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中二维阵列的变换实例
Oct 09 Python
Python数据结构与算法之列表(链表,linked list)简单实现
Oct 30 Python
django实现用户登陆功能详解
Dec 11 Python
Python基于hashlib模块的文件MD5一致性加密验证示例
Feb 10 Python
python 构造三维全零数组的方法
Nov 12 Python
Python通过paramiko远程下载Linux服务器上的文件实例
Dec 27 Python
详解django2中关于时间处理策略
Mar 06 Python
python socket 聊天室实例代码详解
Nov 14 Python
pytorch使用 to 进行类型转换方式
Jan 08 Python
keras的backend 设置 tensorflow,theano操作
Jun 30 Python
Python ConfigParser模块的使用示例
Oct 12 Python
Python爬虫教程之利用正则表达式匹配网页内容
Dec 08 Python
PyTorch 1.0 正式版已经发布了
Dec 13 #Python
修改python plot折线图的坐标轴刻度方法
Dec 13 #Python
python画图系列之个性化显示x轴区段文字的实例
Dec 13 #Python
Python实现的各种常见分布算法示例
Dec 13 #Python
Python线性拟合实现函数与用法示例
Dec 13 #Python
Python基于百度云文字识别API
Dec 13 #Python
Python3实现获取图片文字里中文的方法分析
Dec 13 #Python
You might like
PHP调用三种数据库的方法(2)
2006/10/09 PHP
PHP中的日期及时间
2006/11/23 PHP
php框架Phpbean说明
2008/01/10 PHP
php后台如何避免用户直接进入方法实例
2013/10/15 PHP
浅析php静态方法与非静态方法的用法区别
2016/05/17 PHP
PHP SESSION跨页面传递失败解决方案
2020/12/11 PHP
纯CSS打造的导航菜单(附jquery版)
2010/08/07 Javascript
JS控件的生命周期介绍
2012/10/22 Javascript
JavaScript实现页面实时显示当前时间的简单实例
2013/07/20 Javascript
jquery 隐藏与显示tr标签示例代码
2014/06/06 Javascript
小结Node.js中非阻塞IO和事件循环
2014/09/18 Javascript
微信小程序 详解Page中data数据操作和函数调用
2017/01/12 Javascript
angularjs实现首页轮播图效果
2017/04/14 Javascript
基于JavaScript实现五子棋游戏
2020/08/26 Javascript
基于$.ajax()方法从服务器获取json数据的几种方式总结
2018/01/31 Javascript
微信小程序实现换肤功能
2018/03/14 Javascript
解决ng-repeat产生的ng-model中取不到值的问题
2018/10/02 Javascript
配置一个vue3.0项目的完整步骤
2019/04/26 Javascript
vue倒计时刷新页面不会从头开始的解决方法
2020/03/03 Javascript
[01:35:13]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第一场 1月18日
2021/03/11 DOTA
python实现跨excel的工作表sheet之间的复制方法
2018/05/03 Python
python logging重复记录日志问题的解决方法
2018/07/12 Python
python生成每日报表数据(Excel)并邮件发送的实例
2019/02/03 Python
Pycharm配置autopep8实现流程解析
2020/11/28 Python
Debenhams爱尔兰:英国知名的百货公司
2017/01/02 全球购物
龟牌英国商店:Turtle Wax Brand Store UK
2019/07/02 全球购物
慕尼黑山地运动、户外服装和体育用品专家:Sporthaus Schuster
2019/08/27 全球购物
打造完美自荐信
2014/01/24 职场文书
西式结婚主持词
2014/03/14 职场文书
奠基仪式主持词
2014/03/20 职场文书
水电站项目建议书
2014/05/12 职场文书
写给老婆的保证书
2015/02/27 职场文书
小学教师见习总结
2015/06/23 职场文书
班干部竞选演讲稿(精选5篇)
2019/09/24 职场文书
jQuery实现影院选座订座效果
2021/04/13 jQuery
Golang 并发编程 SingleFlight模式
2022/04/26 Golang