将.py转换为.exe时如何添加图像文件?

时间:2020-04-03 09:21:59

标签: python tkinter exe pyinstaller

我创建了一个基于Tkinter的应用程序,该应用程序将图像用作按钮的图标。

现在我使用auto-py-to-exe(PyInstaller)将其转换为.exe。

但是输出文件无法运行,因为找不到所需的图像。如何将图像文件与.exe文件合并?

这是应用程序代码:

import tkinter as tk
from tkinter import *


root = tk.Tk()
img = PhotoImage(file=r'E:\project\videos\icon\rec.png')
root.tk.call('wm', 'iconphoto', root._w, img)
root.title('Cam Recorder')
cam_icon = PhotoImage(file=r'E:\project\videos\icon\webcam0.png')
com_icon = PhotoImage(file=r'E:\project\videos\icon\webcam1.png')


def change_w():
    if webcam_btn.image == cam_icon:
        webcam_btn.config(image=com_icon)
        webcam_btn.image = com_icon
    else:
        webcam_btn.config(image=cam_icon)
        webcam_btn.image = cam_icon


frame = tk.Frame(root)
frame.pack()

webcam_btn = tk.Button(
    frame,
    image=cam_icon,
    width=70,
    height=80,
    relief=FLAT,
    command=change_w,
    )
webcam_btn.grid(row=0, column=2)
webcam_btn.image = cam_icon
root.mainloop()

这是auto-py-to-exe的屏幕截图:

eg

1 个答案:

答案 0 :(得分:-1)

您可以尝试使用临时文件,将其二进制文件作为byte嵌入代码中,如下所示: 1)使用print(open('path-to-img', 'rb').read())来获取二进制文件。

2)添加

with open('your_temp_path.png', 'wb') as f:
    f.write(b'your_binary_data')

3)在代码末尾使用os.remove('your_temp_path.png')删除临时文件。

希望有帮助!