Как добавить файлы изображений при конвертации .py в .exe? - PullRequest
0 голосов
/ 03 апреля 2020

Я создал приложение на основе Tkinter, которое использует изображения в качестве значков для кнопок.

А теперь я преобразовал его в .exe, используя auto-py-to-exe (PyInstaller).

Но Выходной файл не запускается, потому что не может найти нужные изображения. Как я могу объединить файлы изображений с файлом .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 голосов
/ 03 апреля 2020

Вы можете попробовать использовать временные файлы с их двоичным кодом, встроенным в ваш код как 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') в конце кода, чтобы удалить временный файл.

Надеюсь, это полезно!

...