首页 > 其他 > 详细

Pyinstaller 打包 Tkinter 程序时引入图标解决方法

时间:2020-12-29 20:19:31      阅读:109      评论:0      收藏:0      [点我收藏+]

Pyinstaller 打包 Tkinter 程序时引入图标解决方法

描述

在windows下开发python的gui程序时,多数使用pyinstaller, py2exe等打包工具.
在因为tkinter框架时,代码中使用iconbitmap引入程序框的图标样式,直接运行时没有问题,
但是在pyinstaller打包后会出现无法找到ico文件问题.
网上参考了几个解决方法都过于复杂(img2py, 或者修改spec打包参数)
下面我为大家带来一个非常方便可行的办法.

from Tkinter import *
root = Tk()
root.iconbitmap("icon.ico")
Label(root, text="hello world").pack()
root.mainloop()

为了适配pyinstaller能把icon文件引入,我们修改成程序,把icon.ico 修改为 icon.py

以下为py3.X适用

import base64
open_icon = open("icon.ico","rb")
b64str = base64.b64encode(open_icon.read())
open_icon.close()
write_data = "img = %s" % b64str
f = open("icon.py","w+")
f.write(wrte_data)
f.close()

 

以下PY2.x适用

from Tkinter import *
import base64
from icon import img

root = Tk()
tmp = open("tmp.ico","wb+")
tmp.write(base64.b64decode(img))
tmp.close()
root.iconbitmap("tmp.ico")
os.remove("tmp.ico")

Label(root, text="hello world").pack()
root.mainloop()

 

修改 hello.py源码,导入icon.py中的img, 创建一个临时的tmp.ico文件作为图标引入后删除即可

from Tkinter import *
import base64
from icon import img

root = Tk()
tmp = open("tmp.ico","wb+")
tmp.write(base64.b64decode(img))
tmp.close()
root.iconbitmap("tmp.ico")
os.remove("tmp.ico")

Label(root, text="hello world").pack()
root.mainloop()

最后使用pyinstaller打包即可

 
 

Pyinstaller 打包 Tkinter 程序时引入图标解决方法

原文:https://www.cnblogs.com/duanminkid/p/14208356.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!