index.py 3.4 KB

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