找到结果了就自问自答吧。。。主要思路是用把图片用base64写成py文件之后再导入打包就可以了
假设图标名为logo.ico,先写成py文件:
open_icon = opoen("logo.ico","rb")
b64str = base64.b64encode(open_icon.read())
open_icon.close()
write_data = "img = %s" % b64str
f = open("logo.py","w+")
f.write(write_data)
f.close()
然后在要打包的py文件头加上:from logo import img
之后便是:
tmp = open("tmp.ico","wb+")
tmp.write(base64.b64decode(img))
tmp.close()
root.iconbitmap("tmp.ico")
os.remove("tmp.ico")
tk.Label(root,text = "testing logo").pack()
root.mainloop()
用pyinstaller打包生成单个exe文件,然后这个图标就不会因为相对路径的变化而丢失了。