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

 

本文旨在用python实现无边框的进度条,并在其基础上加了图片,体现了某程序加载动画的效果

实现说明

1.进度条的部分用到了tkinter中的画布组件2.图片无边框显示用到了PYQT5中的QMainWindow, QApplication(由于水平有限,只好用两个不同的库来实现)

源代码


  1. import sys

  2. from PyQt5.QtCore import Qt

  3. from PyQt5.QtWidgets import QMainWindow, QApplication

  4. import time

  5. from tkinter import *

  6. class MainWIndow(QMainWindow):

  7. def __init__(self, parent=None):

  8. super(MainWIndow, self).__init__(parent)

  9. self.resize(500, 667)

  10. self.setWindowTitle("私人医生 copyright@2020 1.2.1")

  11.  

  12. # 设置无边框窗口样式

  13. self.setWindowFlags(Qt.FramelessWindowHint)

  14.  

  15. #子窗口,窗口无按钮 ,但有标题,可注释掉观察效果

  16. self.setWindowFlags(Qt.SubWindow)

  17.  

  18. self.setObjectName("MainWindow")

  19. self.setStyleSheet("#MainWindow{border-image:url(images/python.jpg);}")

  20.  

  21. if __name__ == "__main__":

  22. app = QApplication(sys.argv)

  23. win = MainWIndow()

  24. win.show()

  25.  

  26. #更新进度条函数

  27. def change_schedule(now_schedule,all_schedule):

  28. canvas.coords(fill_rec, (5, 5, 6 + (now_schedule/all_schedule)*100, 25))

  29. root.update()

  30. #进度显示

  31. x.set(str(round(now_schedule/all_schedule*100,2)) + "%")

  32. if round(now_schedule/all_schedule*100,2) == 100.00:

  33. x.set("完成")

  34.  

  35. #创建画布

  36. root = Tk()

  37.  

  38. #画布位置控制,前两个参数为宽度和高度,后两个参数为xy坐标

  39. root.geometry("480x30+720+830")

  40. #创建画布

  41. frame = Frame(root).grid(row = 0,column = 0)

  42. #使用时将框架根据情况选择新的位置

  43. canvas = Canvas(frame,bg = "white")

  44. canvas.grid(row = 0,column = 0)

  45. x = StringVar()

  46. #隐藏标题栏

  47. root.overrideredirect(True)

  48. #将边框像素设置为0,即取消边框

  49. canvas.configure(highlightthickness=0)

  50. #进度条以及完成程度

  51. #设置矩形,无填充即为边框

  52. out_rec = canvas.create_rectangle(5,5,480,25,outline = "red",width = 1)

  53. fill_rec = canvas.create_rectangle(5,5,5,25,outline = "",width = 0,fill = "blue")

  54. Label(frame,textvariable = x).grid(row = 0,column = 1)

  55.  

  56. for i in range(480):

  57. time.sleep(0.01)

  58.  

  59. change_schedule(i,99)

  60.  

  61. #root.mainloop()

运行截图

到此这篇关于python实现无边框进度条的实例代码的文章就介绍到这了

  1. 欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持

  2. *声明:本文于网络整理,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。

http://image98.pinlue.com/thumb/img_jpg/MjmGfYOqXvOCInsbzfK7DqoOfybzncMyBgDYBEdrd1zydtbhoZlG3DARfvBXsaTPorYDicibtMNTficicsTQd3xThA/0.jpeg
分享
评论
首页