因为在python的图形界面工具tkinter中可能使用一些本地图像作为程序图标或者按钮图片,甚至是背景图。但是不管是用pyinstaller或者nuitka将py打包成exe文件,都不会把本地图片打包,也可能因为一些路径问题造成图片不能显示。
以前情况造成的结果就是,在本机可以使用打包好的exe,但复制到其他电脑就开始报错,因为按照原路径找不到图片。解决这种问题的一个思路是,将图片文件用base64编码,直接写到原py文件的代码里面。
可以先到一些在线转化base64的网站把图片转换成base64编码备用(注意不要复制开头的data:image/*;base64,)网站可以用这个 https://base64.us/
设置一个exe的图标
import base64
import os
import tkinter as tk
app = tk.Tk()
app.title("test")
app.geometry('550x550')
temp= open('temp.ico','wb+') #创建一个临时文件储存icon
tempb64=base64.b64decode('图片转化好的base64编码') #将编码用base64解码读入
temp.write(tempb64) #将上面读入的编码写入临时文件
temp.close()
app.iconbitmap('temp.ico') #设置exe的icon
os.remove('temp.ico') #移除临时文件
app.mainloop()