您的位置:首页 > 编程语言 > Python开发

用pyinstaller打包一个exe程序

2017-01-12 14:48 411 查看

用pyinstaller打包一个tkinter的exe程序

今天用pyinstaller打了个小tk程序,整理了一些小问题的解决

打包单个exe文件

-F
选项可以打出一个exe文件,默认是
-D
,意思是打成一个文件夹。

pyinstaller -F TestDataGen.py


打出的桌面程序去掉命令行黑框

-w
选项可以打桌面程序,去掉命令行黑框

pyinstaller -F -w TestDataGen.py


修改程序默认图标

-i
可以设置图标路径,将图标放在根目录:

pyinstaller -F -w -i gen.ico TestDataGen.py


如下:



修改程序左上角的’tk’图标

# ...省略部分
root = Tk(className='数据生成器')
root.iconbitmap('gen.ico')  # 加图标
app = App(root)
root.mainloop()


如下:



替换’tk’图标后,打包的exe执行失败

原因是图标没有打进去,或者打包成文件夹,或者把图标转化成base64数据:

# 这段程序可将图标gen.ico转换成icon.py文件里的base64数据
import base64
open_icon = open("gen.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()


修改主程序:

# ...省略部分
import base64
from icon import img
import os

# 将import进来的icon.py里的数据转换成临时文件tmp.ico,作为图标
tmp = open("tmp.ico","wb+")
tmp.write(base64.b64decode(img))
tmp.close()

root = Tk(className='数据生成器')
app = App(root)
root.iconbitmap('tmp.ico')  # 加图标
os.remove("tmp.ico")  # 删掉临时文件
root.mainloop()


再执行打包命令

pyinstaller -F -w -i gen.ico TestDataGen.py
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  tkinter Python