| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- ####################################
- ## pip install Image
- ## pip install Pyinstaller
- ## Pyinstaller -F -w index.py
- ####################################
- import tkinter as tk
- import time
- from tkinter import *
- import tkinter
- from PIL import Image, ImageTk, ImageSequence
- import sys
- import os
- # import datetime
- class DragWindow:
- def __init__(self):
- self.root = tkinter.Tk()
- self.root.title("优化")
- self.x, self.y = 0, 0
- self.window_size = '300x270'
- # 设置隐藏窗口标题栏和任务栏图标
- self.root.overrideredirect(False)
- # self.root.protocol('WM_DELETE_WINDOW', self.root.iconify)
- # 窗口透明度60%
- # self.root.attributes("-alpha", 0.4)
- # # 设置窗口大小、位置 长x宽+x+y
- self.root.geometry(f"{self.window_size}+10+20")
- # # 设定背景颜色
- # self.root.configure(bg="blue")
- self.canvas = Canvas(self.root,width=200, height=200,bg='white')
- self.canvas.pack()
- # 窗口移动事件
- self.root.bind("<B1-Motion>", self.move)
- # # 单击事件
- # self.root.bind("<Button-1>", self.get_point)
- # # 右击事件
- self.root.bind("<Button-3>", self.close)
- #分解gif并逐帧显示
- def pick(self, filepath, name):
- displayText = "正在优化"+name+"线形"
- label = tk.Label(self.root, text=displayText, font=("华文楷体", 20), fg="green")
- label.pack()
- label1 = tk.Label(self.root, text="0%", font=("华文行楷", 20), fg="green")
- label1.pack()
- global a,flag
- # while 1:
- try:
- for i in range(21):
- im = Image.open(filepath + '\\loading.gif')
- # GIF图片流的迭代器
- iter = ImageSequence.Iterator(im)
- #frame就是gif的每一帧,转换一下格式就能显示了
- # starttime = datetime.datetime.now()
- for frame in iter:
- pic=ImageTk.PhotoImage(frame)
- self.canvas.create_image((100,100), image=pic)
- time.sleep(0.02)
- self.root.update_idletasks() #刷新
- self.root.update()
- # endtime = datetime.datetime.now()
- # print ((endtime - starttime).microseconds)
- if i < 2:
- label1['text'] = str((i+1) * 5) + "%"
- elif i < 9:
- label1['text'] = str(2 * 5) + "%"
- elif i < 13:
- label1['text'] = str(10 * 5) + "%"
- else:
- label1['text'] = str((i+1) * 5) + "%"
- except Exception as e:
- print("错误信息:",e)
- def move(self, event):
- """窗口移动事件"""
- new_x = (event.x - self.x) + self.root.winfo_x()
- new_y = (event.y - self.y) + self.root.winfo_y()
- s = f"{self.window_size}+{new_x}+{new_y}"
- self.root.geometry(s)
- def get_point(self, event):
- """获取当前窗口位置并保存"""
- self.x, self.y = event.x, event.y
- def run(self):
- self.root.mainloop()
- def close(self):
- self.root.destroy()
- if __name__ == "__main__":
- if len(sys.argv) < 3:
- filepath = os.path.dirname(os.path.abspath(__file__))
- name = ""
- else:
- filepath = sys.argv[1]
- name = sys.argv[2]
- window = DragWindow()
- window.pick(filepath, name)
- # window.run()
-
|