前言
- 我python开发的GUI界面(图形用户界面)一直是tkinter,打包exe一直是Pyinstaller。但是打包出来的exe图标、状态栏图标、窗体左上角图标一直是默认的羽毛,我想自定义。
效果
- 最后使用base64创建临时ico解决了该问题
步骤
- 创建icoToBase64.py,内容如下:
import base64
# ico转base64
open_icon = open("./img/logo.ico", "rb")
b64str = base64.b64encode(open_icon.read()) # 转换为base64编码
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
# 创建临时logo
def createTempLogo(): # 处理图片
tmp = open("temp.ico", "wb+") # 创建temp.ico临时文件
tmp.write(base64.b64decode(imgBase64)) # 写入img的base64
tmp.close() # 关闭文件
...
createTempLogo()
root.wm_iconbitmap("temp.ico")# 使用wm_iconbitmap引入创建的ico
if os.path.exists("temp.ico"):
os.remove("temp.ico")# 创建logo后需删除临时logo
...
结语
最后不管是直接运行还是打包exe后运行,会发现窗体图标、任务栏图标、exe图标都变成了自定义的图标。
原文链接:https://xiblogs.top/?id=65