tkinter打包替换ico文件
替换tk默认图标
如果文件内采用自定义的图标替换tk默认图标,使用说明文档的方法root.iconbitmap(icon.ico)
替换tk图标后,打包的exe执行失败。原因是图标没有打进去,解决方法是打包成文件夹,或者把图标转化成base64数据。
1 这段程序可将图标gen.ico转换成icon.py文件里的base64数据 2 import base64 3 open_icon = open("gen.ico","rb") 4 b64str = base64.b64encode(open_icon.read()) 5 open_icon.close() 6 write_data = "img = '{0}'".format(b64str) 7 f = open("icon.py","w+") 8 f.write(write_data) 9 f.close()
修改主程序:
1 import base64 2 from icon import img 3 import os 4 5 将import进来的icon.py里的数据转换成临时文件tmp.ico,作为图标 6 tmp = open('tmp.ico', 'wb+') 7 tmp.write(base64.b64decode(img)) 8 tmp.close() 9 root.iconbitmap('tmp.ico') 10 os.remove('tmp.ico') 11 12 MainSerialToolUI(master=root) 13 root.resizable(False, False) 14 root.mainloop()