前言
本篇我们做一个项目,让Python自动打包Python文件成为exe文件,学会了这个,我们在打包的时候就不需要cmd和pyinstaller了。
效果展示
项目讲解
首先,我们先导入库:
from tkinter import filedialog
import tkinter as tk
import os
然后就是创建窗口和定义变量,这里我们使用tkinter的StringVar类储存。
window=tk.Tk()#创建窗口
filepath=tk.StringVar()#源文件路径
iconpath=tk.StringVar()#图标路径
distpath=tk.StringVar()#exe的文件夹
distname=tk.StringVar()#exe的名字
nowindow=tk.StringVar()#显示命令行窗口还是程序窗口
nowindow.set(' -w')#默认是程序窗口
定义方法:
def fileSelect(var,types):
path=filedialog.askopenfilename(title='选择文件',filetypes=types)
var.set(path)
def dirSelect(var):
path=filedialog.askdirectory(title='选择文件夹')
var.set(path)
def done():
global filepath,iconpath,distpath,nowindow
text='pyinstaller -F '+filepath.get()+' -i '+iconpath.get()+' --distpath '+distpath.get()+' --workpath '+distpath.get()+' --specpath '+distpath.get()+' -n '+distname.get()+nowindow.get()
print(text)
os.system(text)
创建窗口内的元素:
tk.Radiobutton(window,text='使用命令窗口',variable=nowindow,value=' -c').grid(column=0,row=0)
tk.Radiobutton(window,text='使用程序窗口',variable=nowindow,value=' -w').grid(column=1,row=0)
tk.Label(window,text='请选择源文件路径:').grid(column=0,row=1)
tk.Button(window,text='点击选择',command=lambda:fileSelect(filepath,[('Python源文件','*.py')])).grid(column=1,row=1)
tk.Label(window,textvariable=filepath).grid(column=0,row=2)
tk.Label(window,text='请选择图标文件路径:').grid(column=0,row=3)
tk.Button(window,text='点击选择',command=lambda:fileSelect(iconpath,[('图标文件','*.ico')])).grid(column=1,row=3)
tk.Label(window,textvariable=iconpath).grid(column=0,row=4)
tk.Label(window,text='请选择完成文件夹路径:').grid(column=0,row=5)
tk.Button(window,text='点击选择',command=lambda:dirSelect(distpath)).grid(column=1,row=5)
tk.Label(window,textvariable=distpath).grid(column=0,row=6)
tk.Label(window,text='请输入完成文件名称:').grid(column=0,row=7)
tk.Entry(window,textvariable=distname).grid(column=0,row=8)
tk.Button(window,text='生成应用程序',command=done).grid(column=1,row=8)
最后一行让窗口显示:
window.mainloop()
完整代码
from tkinter import filedialog
import tkinter as tk
import os
window=tk.Tk()
filepath=tk.StringVar()
iconpath=tk.StringVar()
distpath=tk.StringVar()
distname=tk.StringVar()
nowindow=tk.StringVar()
nowindow.set(' -w')
def fileSelect(var,types):
path=filedialog.askopenfilename(title='选择文件',filetypes=types)
var.set(path)
def dirSelect(var):
path=filedialog.askdirectory(title='选择文件夹')
var.set(path)
def done():
global filepath,iconpath,distpath,nowindow
text='pyinstaller -F '+filepath.get()+' -i '+iconpath.get()+' --distpath '+distpath.get()+' --workpath '+distpath.get()+' --specpath '+distpath.get()+' -n '+distname.get()+nowindow.get()
print(text)
os.system(text)
tk.Radiobutton(window,text='使用命令窗口',variable=nowindow,value=' -c').grid(column=0,row=0)
tk.Radiobutton(window,text='使用程序窗口',variable=nowindow,value=' -w').grid(column=1,row=0)
tk.Label(window,text='请选择源文件路径:').grid(column=0,row=1)
tk.Button(window,text='点击选择',command=lambda:fileSelect(filepath,[('Python源文件','*.py')])).grid(column=1,row=1)
tk.Label(window,textvariable=filepath).grid(column=0,row=2)
tk.Label(window,text='请选择图标文件路径:').grid(column=0,row=3)
tk.Button(window,text='点击选择',command=lambda:fileSelect(iconpath,[('图标文件','*.ico')])).grid(column=1,row=3)
tk.Label(window,textvariable=iconpath).grid(column=0,row=4)
tk.Label(window,text='请选择完成文件夹路径:').grid(column=0,row=5)
tk.Button(window,text='点击选择',command=lambda:dirSelect(distpath)).grid(column=1,row=5)
tk.Label(window,textvariable=distpath).grid(column=0,row=6)
tk.Label(window,text='请输入完成文件名称:').grid(column=0,row=7)
tk.Entry(window,textvariable=distname).grid(column=0,row=8)
tk.Button(window,text='生成应用程序',command=done).grid(column=1,row=8)
window.mainloop()
尾声
好了,我们这个项目到这里就做完了,欢迎来改造这个程序,让.py文件变成.exe文件变得更方便!喜欢就点个关注吧!!!