Python实现带背景图的无边框进度条实例
本文介绍如何在Python中结合Tkinter与PyQt5实现带背景图片的无边框进度条。通过PyQt5设置窗口样式并加载背景图,利用Tkinter的Canvas组件绘制动态进度条,模拟程序启动加载效果。代码包含窗口初始化、无边框设置及进度更新逻辑,适用于需要自定义UI的桌面应用开发场景。
Python实现带背景图的无边框进度条实例
在开发Python课程配套系统时,为了提升用户体验,计划为系统添加一个启动动画效果。最终方案采用背景图片结合动态进度条的形式,以直观展示程序加载过程。
实现说明
实现说明
该功能主要涉及两个Python库的配合使用:首先,利用Tkinter库中的Canvas(画布)组件来绘制和更新进度条;其次,使用PyQt5库中的QMainWindow和QApplication类来实现窗口的无边框显示及背景图片加载。由于技术限制,此处分别调用两个库来完成不同部分的功能。
源代码
源代码
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QMainWindow, QApplication
import time
from tkinter import *
class MainWIndow(QMainWindow):
def __init__(self, parent=None):
super(MainWIndow, self).__init__(parent)
self.resize(500, 667)
self.setWindowTitle('私人医生 copyright@2020 1.2.1')
# 设置无边框窗口样式
self.setWindowFlags(Qt.FramelessWindowHint)
#子窗口,窗口无按钮 ,但有标题,可注释掉观察效果
self.setWindowFlags(Qt.SubWindow)
self.setObjectName("MainWindow")
self.setStyleSheet("#MainWindow{border-image:url(images/python.jpg);}")
if __name__ == '__main__':
app = QApplication(sys.argv)
win = MainWIndow()
win.show()
#更新进度条函数
def change_schedule(now_schedule,all_schedule):
canvas.coords(fill_rec, (5, 5, 6 + (now_schedule/all_schedule)*100, 25))
root.update()
#进度显示
x.set(str(round(now_schedule/all_schedule*100,2)) + '%')
if round(now_schedule/all_schedule*100,2) == 100.00:
x.set("完成")
#创建画布
root = Tk()
#画布位置控制,前两个参数为宽度和高度,后两个参数为xy坐标
root.geometry("480x30+720+830")
#创建画布
frame = Frame(root).grid(row = 0,column = 0)
#使用时将框架根据情况选择新的位置
canvas = Canvas(frame,bg = "white")
canvas.grid(row = 0,column = 0)
x = StringVar()
#隐藏标题栏
root.overrideredirect(True)
#将边框像素设置为0,即取消边框
canvas.configure(highlightthickness=0)
#进度条以及完成程度
#设置矩形,无填充即为边框
out_rec = canvas.create_rectangle(5,5,480,25,outline = "red",width = 1)
fill_rec = canvas.create_rectangle(5,5,5,25,outline = "",width = 0,fill = "blue")
Label(frame,textvariable = x).grid(row = 0,column = 1)
for i in range(480):
time.sleep(0.01)
change_schedule(i,99)
#root.mainloop()
运行截图
运行截图

以上即为Python实现带背景图的无边框进度条的完整示例。如需了解更多关于Python无边框进度条的实现细节,建议查阅本站往期文章或继续浏览后续内容。感谢支持!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













