当前位置 博文首页 > python实现无边框进度条的实例代码

    python实现无边框进度条的实例代码

    作者:螺旋测微计 时间:2021-02-17 06:38

    上python课程时需要设计一个系统,想着为系统加一个启动动画,所以做成了图片加进度条的形式。
    本文旨在用python实现无边框的进度条,并在其基础上加了图片,体现了某程序加载动画的效果

    实现说明

    1.进度条的部分用到了tkinter中的画布组件
    2.图片无边框显示用到了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()

    运行截图

    在这里插入图片描述

    js
    下一篇:没有了