tkinter:36行代码让Python自动将.py文件打包成.exe文件,从此和pyinstaller说拜拜

该文章介绍了一个项目,通过Python的Tkinter库创建一个图形界面,用户可以输入源文件、图标、输出目录和程序类型,然后自动调用PyInstaller将Python脚本打包成exe可执行文件,简化了手动使用cmd和PyInstaller的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

本篇我们做一个项目,让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文件变得更方便!喜欢就点个关注吧!!!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值