前言
- 我python开发的GUI界面(图形用户界面)一直是tkinter,打包exe一直是Pyinstaller。但是打包出来的exe图标、状态栏图标、窗体左上角图标一直是默认的羽毛,我想自定义。
效果
- 最后使用base64创建临时ico解决了该问题

步骤
- 创建icoToBase64.py,内容如下:
| import base64 |
| |
| |
| open_icon = open("./img/logo.ico", "rb") |
| b64str = base64.b64encode(open_icon.read()) |
| open_icon.close() |
| write_data = "imgBase64 = %s" % b64str |
| f = open("./img/logo.py", "w+") |
| f.write(write_data) |
| f.close() |
| |
- 创建img目录,将准备好的logo.ico放入img目录中。
- 运行icoToBase64.py文件,将ico转换为base64,写入py文件,得到logo.py。
- 引入logo.py,使用base64创建临时logo,自定义窗体图标与任务栏图标。
| from img.logo import imgBase64 |
| |
| |
| def createTempLogo(): |
| tmp = open("temp.ico", "wb+") |
| tmp.write(base64.b64decode(imgBase64)) |
| tmp.close() |
| ... |
| createTempLogo() |
| root.wm_iconbitmap("temp.ico") |
| if os.path.exists("temp.ico"): |
| os.remove("temp.ico") |
| ... |
- 执行命令:pyi-makespec -F -w main.py。创建main.spec配置文件,自定义exe图标。
| |
| |
| |
| block_cipher = None |
| |
| a = Analysis( |
| ['main.py'], |
| pathex=[], |
| binaries=[], |
| datas=[], |
| hiddenimports=[], |
| hookspath=[], |
| hooksconfig={}, |
| runtime_hooks=[], |
| excludes=[], |
| win_no_prefer_redirects=False, |
| win_private_assemblies=False, |
| cipher=block_cipher, |
| noarchive=False, |
| ) |
| pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher) |
| |
| exe = EXE( |
| pyz, |
| a.scripts, |
| a.binaries, |
| a.zipfiles, |
| a.datas, |
| [], |
| name='批量修改照片拍摄时间_v0.0.1', |
| debug=False, |
| bootloader_ignore_signals=False, |
| strip=False, |
| upx=True, |
| upx_exclude=[], |
| runtime_tmpdir=None, |
| console=False, |
| disable_windowed_traceback=False, |
| argv_emulation=False, |
| target_arch=None, |
| codesign_identity=None, |
| entitlements_file=None, |
| icon='./img/logo.ico' |
| ) |
一般使用Pyinstaller打包,是使用命令的,各种参数就加在命令里面,但其实还可以使用spec这种配置文件的打包方式,只需要运行Pyinstaller main.spec这个命令即可,无需在命令中添加参数。Analysis中的第一个列表就是需要打包的py文件,我这里是打包main.py文件(支持添加多个)。EXE中也可修改,其中比较常用的就是name与icon,分别用于自定义打包后的exe名称与exe图标。
结语
最后不管是直接运行还是打包exe后运行,会发现窗体图标、任务栏图标、exe图标都变成了自定义的图标。

原文链接:https://xiblogs.top/?id=65
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了