修改python打包后的窗体图标、任务栏图标、exe图标
前言
- 我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
...
- 执行命令: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图标都变成了自定义的图标。
原文链接:https://xiblogs.top/?id=65
修改python打包后的窗体图标、任务栏图标、exe图标的更多相关文章
- MFC修改任务栏图标及程序运行exe图标
修改左上角的图标和任务栏里图标 在对话框构造函数中 1 CTestDlg::CTestDlg(CWnd* pParent )2 : CDialog(CTestDlg::IDD, pParent)3 { ...
- 如何修改Vue打包后文件的接口地址配置
1.背景 常规的vue项目分为本地环境和生产环境,我们只要对 config 文件夹下的 dev.env.js 和 prod.env.js 做相应的配置即可.但是最近在做的项目中,涉及到私有化部署,就是 ...
- Python打包成exe文件很难?一分钟即可学会,并添加图标!
环境1.python 3.72.pyinstaller下载方式:2.1 python安装(略)2.2 安装pyinstaller打开DOS窗口输入以下命令:pip install pyinstalle ...
- nwjs如何打包文件为exe文件并修改exe图标
1.下载nw.js,如果是SDK版的可以调试页面,打包后可不可以调试还没有试,不是SDK的话没有调试选项,试了一下,打包后的文件也一样调试不了. 2.把要打包的文件和package.json都放在nw ...
- C#项目打包后安装的桌面快捷方式图标怎么设置成自己想要的图标
#项目打包后安装的桌面快捷方式图标怎么设置成自己想要的图标 2012-08-25 09:11匿名 | 浏览 3286 次 C#编程 C#项目用vs2005自带的工具打包后安装的桌面快捷方式图标怎么设 ...
- 【整理】 vue-cli 打包后显示favicon.ico小图标
vue-cli 打包后显示favicon.ico小图标 https://www.cnblogs.com/mmzuo-798/p/9285013.html
- vue iView 打包后 字体图标不显示
问题描述: 今天webpack打包后发现iView 字体图标不显示 解决方案: build/webpack.prod.conf.js 这个文件里面 module: { rules: utils.sty ...
- taro taroUi的H5打包后路径/修改为./
打包文件路径修改在config/index.tsx中,如下 esnextModules: ['taro-ui'],配置也需要在h5中写入并且将publicPath: './'即可,不需要在做一个h ...
- vue-cli3抽离配置文件,动态修改打包后配置
由于项目有外部部署需求,对不同的环境前端调用后台的地址不一样,且不能提前预知必须到部署现场后才能确定后端地址,故需要将调用后端相关的配置抽离到文件中,打包后部署人员在方便现场修改. 思路如下: 1.由 ...
- vue打包时,assets目录 和static目录下文件的处理区别(nodeModule中插件源码修改后,打包后的文件应放在static目录)
为了回答这个问题,我们首先需要了解Webpack如何处理静态资产.在 *.vue 组件中,所有模板和CSS都会被 vue-html-loader 及 css-loader 解析,并查找资源URL.例如 ...
随机推荐
- docker卸载分享
一.准备工作: 1.杀死docker有关的容器: docker kill $(docker ps -a -q) 2.删除所有docker容器: docker rm $(docker ps -a -q) ...
- card 卡片 html
{% extends 'base.html' %} {% block content %} <div class="container"> <h1>客户信息 ...
- [oeasy]python0036_牛说_cowsay_小动物说话_asciiart_figlet_lolcat_管道(祝大家新年快乐~)
牛说(cowsay) 回忆上次内容 上次我们研究了shell脚本的编程 并且在shell中实现了 循环语句 延迟命令 清屏命令 python命令 figlet命令 编辑 还能整点什么呢? 还想 ...
- 【漏洞分析】Li.Fi攻击事件分析:缺乏关键参数检查的钻石协议
背景信息 2024 年 7 月 16日,Li.Fi 协议遭受黑客攻击,漏洞成因是钻石协议中 diamond 合约新添加的 facet 合约没有对参数进行检查,导致 call 函数任意执行.且 diam ...
- 学习笔记--Java中final关键字
Java中final关键字 关于Java语言中的final关键字: final是一个关键字,表示:最终的,不可改变 final修饰的类无法被继承 final修饰的方法无法被覆盖 final修饰的变量一 ...
- 数据类型的别名&&随机数_C
// Code file created by C Code Develop #include "ccd.h" #include "stdio.h" #incl ...
- DASCTF 2023六月挑战赛|二进制专项 PWN (下)
DASCTF 2023六月挑战赛|二进制专项 PWN (下) 1.can_you_find_me 检查保护 意料之中 64位ida逆向 只有add,和del功能不能show 先看add吧 最多申请10 ...
- 华为matebook 14s笔记本,Chrome浏览器开启硬件加速,屏幕闪屏,黑框,页面屏幕卡死,解决办法
解决办法使用了 https://zhuanlan.zhihu.com/p/644296061 这个连接下的最后一个折中办法解决! 一.现象 Chrome开启"硬件加速模式"后,在观 ...
- Jenkins 配置即代码(Configuration as Code)详解
1.概述 在<Centos7下安装配置最新版本Jenkins(2.452.3)>这篇博文中讲解了如何安装Jenkins,虽然在安装Jenkins时安装了一些必备的推荐插件,但在企业环境中使 ...
- 【FTP】小米手机FTP传输
设置方法 打开[文件管理],右上角按钮选择[远程管理] 点击设置按钮 默认保持唤醒状态 设置FTP账户的用户名密码 Windows访问: 然后开启服务即可: 手机和电脑连接同一个网络内访问 每次接入网 ...