使用python在windows开发tkinter程序打包时想改变默认的图片,经常会在打包成exe可执行文件后,无法正常打开(原因是找不到对应的ico文件),本人也是在网上找了很长时间,且试错了很多次,才总结到了下面这种方式。,希望能帮你解决问题。
首先,找到你想要做成图片的图片,把他改成 ico格式(网上能找到在线转换的工具),然后
代码如下:
1、用程序写一个make_icon.py文件,来生成icon.py文件
内容为定义一个类Icon 写一个初始化方法 def __init__(self):
import base64
with open("icon.py", "w") as f:
f.write('class Icon(object):\n')
f.write('\tdef __init__(self):\n')
f.write("\t\tself.ig='")

# 2、将图标.ico打开,把它读取后转化为base64字节流,存放到icon.py文件中的ig变量内。(这里其实是拼接到最后)
path = "图标.ico"
with open(path, "rb") as i:
b64str = base64.b64encode(i.read())
with open("icon.py", "ab+") as f:
f.write(b64str)
with open("icon.py", "a") as f:
f.write("'")

以上程序运行,会生成一个 icon.py的文件,后续打包和脚本放一个目录下。内容如下

3、打开你写好的调用tkinter的py文件,调用读取该icon文件的ig内容:
import icon
icon1 = icon.Icon
4、获取改ig变量的内容
icc = icon1().ig
with open('tmp.ico', 'wb') as tmp:
tmp.write(base64.b64decode(icc))
5、创建一个临时ico图标给程序使用
root.iconbitmap('tmp.ico')
6、最后删除该文件
os.remove('tmp.ico')
最后用pyinstaller打包
注意:icon.py和test.py要放置到同一个路径下,然后进行打包

打包完成后左上角的图片就会改变
