修改python打包后的窗体图标、任务栏图标、exe图标

前言

  • 我python开发的GUI界面(图形用户界面)一直是tkinter,打包exe一直是Pyinstaller。但是打包出来的exe图标、状态栏图标、窗体左上角图标一直是默认的羽毛,我想自定义。

效果

  • 最后使用base64创建临时ico解决了该问题
    image

步骤

  1. 创建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()
  1. 创建img目录,将准备好的logo.ico放入img目录中。
  2. 运行icoToBase64.py文件,将ico转换为base64,写入py文件,得到logo.py。
  3. 引入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
...
  1. 执行命令:pyi-makespec -F -w main.py。创建main.spec配置文件,自定义exe图标。
# -*- mode: python ; coding: utf-8 -*-
# 打包命令:Pyinstaller main.spec

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,# 双击exe是否显示cmd窗口
    disable_windowed_traceback=False,
    argv_emulation=False,
    target_arch=None,
    codesign_identity=None,
    entitlements_file=None,
    icon='./img/logo.ico'# 打包后的exe图标
)

一般使用Pyinstaller打包,是使用命令的,各种参数就加在命令里面,但其实还可以使用spec这种配置文件的打包方式,只需要运行Pyinstaller main.spec这个命令即可,无需在命令中添加参数。Analysis中的第一个列表就是需要打包的py文件,我这里是打包main.py文件(支持添加多个)。EXE中也可修改,其中比较常用的就是name与icon,分别用于自定义打包后的exe名称与exe图标。

结语

最后不管是直接运行还是打包exe后运行,会发现窗体图标、任务栏图标、exe图标都变成了自定义的图标。
image
原文链接:https://xiblogs.top/?id=65

posted @ 2023-12-05 11:03  曦12  阅读(2488)  评论(0编辑  收藏  举报