环境:python3.7.8
查看版本:
pip show -f pyinstaller
python --version
pip --version
Python 3.7.8
pip 24.0 from D:\python3.7.8\lib\site-packages\pip (python 3.7)
安装pyinstaller
pip install pyinstaller
卸载 PyInstaller
pip uninstall pyinstaller
安装成功后可在目录D:\python3.7.8\Scripts下看到pyinstaller.exe文件
计时器源码:
# -*- coding: utf-8 -*-
import time
import tkinter as tk
from threading import Thread
import os
def get_time(handle):
while True:
s = handle.endtime - int(time.time())
days = int(s / 86400)
hours = int((s % 86400) / 3600)
mins = int((s % 3600) / 60)
handle.LabelDays.config(text=f'{days} 天')
handle.LabelHours.config(text=f'{hours} 时')
handle.LabelMins.config(text=f'{mins} 分')
# handle.LabelS.config(text=f'共计 {format(s, ",")} 秒')
time.sleep(1)
class APP():
def __init__(self):
with open('config', 'r', encoding='utf8') as f:
self.Target = f.readline().strip()
self.endtime = eval(f.readline().strip())
self.window = tk.Tk()
self.window.geometry('405x270+1128+290')
self.set_Line()
self.set_text()
self.set_layout()
self.set_others()
def set_Line(self):
self.CanvasBg = tk.Canvas(self.window, bg='black', width=405, height=270,highlightthickness=0)
self.CanvasBg.place(x=0, y=0)
self.CanvasBg.create_line(0, 73, 405, 73, fill='green')
self.CanvasBg.create_line(0, 200, 405, 200, fill='green')
def set_text(self):
self.LabelTitle = tk.Label(self.window, text=f'距离 {self.Target} 还有', bg='black', fg='yellow',
font=('方正青铜体简体', 17))
self.LabelDays = tk.Label(self.window, text='00 天', bg='black', fg='white', font=('方正青铜体简体', 17))
self.LabelHours = tk.Label(self.window, text='00 时', bg='black', fg='white', font=('方正青铜体简体', 17))
self.LabelMins = tk.Label(self.window, text='00 分', bg='black', fg='white', font=('方正青铜体简体', 17))
# self.LabelS = tk.Label(self.window, text='共计 000,000 秒', bg='black', fg='white', font=('方正青铜体简体', 17))
def set_layout(self):
tk.Label(self.window, bg='black').pack(expand='yes')
self.LabelTitle.pack(expand='yes')
self.LabelDays.pack(expand='yes')
self.LabelHours.pack(expand='yes')
self.LabelMins.pack(expand='yes')
# self.LabelS.pack(expand='yes')
tk.Label(self.window, bg='black').pack()
def set_others(self):
self.window.resizable(0, 0)
self.window.overrideredirect(True)
self.LabelTitle.bind("<Button-1>", self.updata_window)
Thread(target=get_time, args=(self,)).start()
def updata_window(self, event):
self.UpdataWindow = tk.Toplevel()
self.UpdataWindow['bg'] = '#f6ccb4'
self.UpdataWindow.title('修 改')
self.UpdataWindow.geometry('240x140')
self.EntryTarget = tk.Entry(self.UpdataWindow)
self.EntryEndtime = tk.Entry(self.UpdataWindow)
tk.Label(self.UpdataWindow, bg='#f6ccb4', text='目 标').grid(row=1, column=1, pady=10, padx=5)
self.EntryTarget.grid(row=1, column=2)
tk.Label(self.UpdataWindow, bg='#f6ccb4', text='时间截').grid(row=2, column=1, pady=10, padx=5)
self.EntryEndtime.grid(row=2, column=2)
tk.Button(self.UpdataWindow, bg='black', fg='white', width='19', text='修改', command=self.updata).grid(row=3,
column=2)
def updata(self):
if self.EntryEndtime.get():
self.Target = self.EntryTarget.get()
self.endtime = eval(self.EntryEndtime.get())
self.LabelTitle.config(text=f'距离 {self.Target} 还有')
self.UpdataWindow.destroy()
with open('config', 'w', encoding='utf8') as f:
f.write(f'{self.Target}\n{self.endtime}')
if __name__ == '__main__':
myapp = APP()
myapp.window.mainloop()
文件:
"D:\my-python-test\test3\config"
"D:\my-python-test\test3\deskTime.py"
config文件内容:
测试一下结束
1726379068
时间戳自行获取。
进入文档所在目录,cmd下执行
pyinstaller --onefile deskTime.py --noconsole
打包后可在当前目录下的dist中执行
deskTime.exe
效果如下图,由于我的系统主题是黑夜,所以这里源码我同意修改了背景颜色为black,需要修改颜色,自行修改:
点击名称还能修改
打包还生成文件"D:\my-python-test\test3\deskTime.spec",该文件是打包deskTime.py此次命令的规范文件
下次直接打包该文件就可以deskTime.spec
pyinstaller deskTime.spec
开机自启:
直接将打包好的EXE的快捷方式复制到开机启动项的文件夹内
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
我在目录文件夹C:\ProgramData\Microsoft\Windows\下没有找到Start Menu目录
可使用Win+R,输入以下内容:
%ProgramData%\Microsoft\Windows\Start Menu\Programs\Startup
将 deskTime.exe的快捷方式添加进来,这样就可以实现开机自启了。
快快用起来吧,赞个赞喔~