【问题描述】
在Python中可以使用pyinstaller命令将.py文件打包成.exe文件,但是成功打包成.exe文件后,在Windows系统上运行却出现了如下错误:
_tkinter.TclError: bitmap "xzw.ico" not defined
【问题原因】
出现这个错误的原因是因为在我们的.py文件中引入了外部图片,打包成.exe文件放到桌面上运行,在同一目录下没有找到该图片。
【解决办法】
此处提供两种解决办法:
1、将图片放到指定位置,例如:程序中图片的位置目录修改成如下:
root.iconbitmap('C://Users//Machenike//Desktop//picture.ico')
相应的将picture.ico图片也要放到桌面上,这样这个报错就会解决。此方法比较简单实用,但是有时候我们打包成.exe文件后并不希望再有额外的图片或文件,这样使用起来也会比较麻烦,于是这里提供另外一种方法。
2、对图片进行base64转码操作。
(1)将需要引入的图片进行base64转码,并保存成另外一个.py文件
# base64转码,将转码后的文件存入icon.py中
open_icon = open("xzw.ico", "rb")
b64str = base64.b64encode(open_icon.read())
open_icon.close()
write_data = "img = %s" % b64str
f = open("icon.py", "w+")
f.write(write_data)
f.close()
(2)引入保存的.py文件,并进行解码添加图片操作
from compressed_software.icon import img
# 读取base64转码后的数据,并设置压缩图标
picture = open("picture.ico", "wb+")
picture.write(base64.b64decode(img))
picture.close()
root.iconbitmap('picture.ico')
os.remove("picture.ico")
(3)此时,打包再次进行测试,上述错误就会得到解决。
你们在此过程中遇到了什么问题,欢迎留言,让我看看你们都遇到了哪些问题。