index.py 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. # Pyinstaller -F -w ZDMProgressBar.py
  2. import tkinter as tk
  3. import time
  4. from tkinter import *
  5. import tkinter
  6. from PIL import Image, ImageTk, ImageSequence
  7. import sys
  8. import os
  9. # import datetime
  10. class DragWindow:
  11. def __init__(self):
  12. self.root = tkinter.Tk()
  13. self.root.title("优化")
  14. self.x, self.y = 0, 0
  15. self.window_size = '300x270'
  16. # 设置隐藏窗口标题栏和任务栏图标
  17. self.root.overrideredirect(False)
  18. # self.root.protocol('WM_DELETE_WINDOW', self.root.iconify)
  19. # 窗口透明度60%
  20. # self.root.attributes("-alpha", 0.4)
  21. # # 设置窗口大小、位置 长x宽+x+y
  22. self.root.geometry(f"{self.window_size}+10+20")
  23. # # 设定背景颜色
  24. # self.root.configure(bg="blue")
  25. self.canvas = Canvas(self.root,width=200, height=200,bg='white')
  26. self.canvas.pack()
  27. # 窗口移动事件
  28. self.root.bind("<B1-Motion>", self.move)
  29. # # 单击事件
  30. # self.root.bind("<Button-1>", self.get_point)
  31. # # 右击事件
  32. self.root.bind("<Button-3>", self.close)
  33. #分解gif并逐帧显示
  34. def pick(self, filepath, name):
  35. displayText = "正在优化"+name+"线形..."
  36. label = tk.Label(self.root, text=displayText, font=("华文楷体", 20), fg="green")
  37. label.pack()
  38. label1 = tk.Label(self.root, text="0%", font=("华文行楷", 20), fg="green")
  39. label1.pack()
  40. global a,flag
  41. # while 1:
  42. try:
  43. for i in range(21):
  44. im = Image.open(filepath + '\\loading.gif')
  45. # GIF图片流的迭代器
  46. iter = ImageSequence.Iterator(im)
  47. #frame就是gif的每一帧,转换一下格式就能显示了
  48. # starttime = datetime.datetime.now()
  49. for frame in iter:
  50. pic=ImageTk.PhotoImage(frame)
  51. self.canvas.create_image((100,100), image=pic)
  52. time.sleep(0.02)
  53. self.root.update_idletasks() #刷新
  54. self.root.update()
  55. # endtime = datetime.datetime.now()
  56. # print ((endtime - starttime).microseconds)
  57. label1['text'] = str((i+1) * 5) + "%"
  58. except Exception as e:
  59. print("错误信息:",e)
  60. def move(self, event):
  61. """窗口移动事件"""
  62. new_x = (event.x - self.x) + self.root.winfo_x()
  63. new_y = (event.y - self.y) + self.root.winfo_y()
  64. s = f"{self.window_size}+{new_x}+{new_y}"
  65. self.root.geometry(s)
  66. def get_point(self, event):
  67. """获取当前窗口位置并保存"""
  68. self.x, self.y = event.x, event.y
  69. def run(self):
  70. self.root.mainloop()
  71. def close(self):
  72. self.root.destroy()
  73. if __name__ == "__main__":
  74. filepath = sys.argv[1]
  75. name = sys.argv[2]
  76. # filepath = os.path.dirname(os.path.abspath(__file__))
  77. # name = "纵断面"
  78. window = DragWindow()
  79. window.pick(filepath, name)
  80. # window.run()