Я сделал простую Python3 -программу, которая использует PySimple GUI для создания Windows - GUI -программы. Эта программа также содержит картинку CAESAR.png, которая находится в той же папке, что и мой python -код. Вот часть кода макета:
import PySimpleGUI as sg
layout = [[sg.Image('CAESAR.png')],
[sg.Text("Geheime Nachricht in GROSSBUCHSTABEN eintippen:")],
[sg.Multiline(size=(70,4),key="GEHEIM")],
[sg.Spin([i for i in range(1,26)], initial_value=12, key="SS"), sg.Text("Schlüssel zwischen 1 und 25 wählen")],
[sg.Radio("Codieren:", "RADIO1", key="XX" ,default=True),
sg.Radio("Decodieren:","RADIO1", key="YY")],
[sg.Text("ERGEBNIS:")],
[sg.Multiline(size=(70,4),key="AUSGABE")],
[sg.Button("LOS"), sg.Button("ENDE")]]
window = sg.Window("Cäsars Geheimcode", layout)
Пока это работает нормально. Теперь я хочу создать файл windows -exe с помощью pysimple gui -exemaker (версия 1.3):
python -m pysimple gui -exemaker.pysimple gui -exemaker
Скомпилированный exe-файл работает нормально, если изображение CAESAR.png находится в той же папке, что и exe-файл. Если изображение находится не в той же папке, что и exe-файл, я получаю сообщение об ошибке. Вопрос: Как я могу заставить pysimple gui -exemaker «встроить» файл изображения в exe-файл, чтобы этот exe-файл работал правильно без дополнительного CAESAR.png в той же папке?
в соответствии с ответом и ссылкой, предоставленной мной @BhargavDesai, чтобы получить относительный путь, сделал следующее:
def resource_path(relative_path):
""" Get absolute path to resource, works for dev and for PyInstaller """
base_path = getattr(sys, '_MEIPASS', os.path.dirname(os.path.abspath(__file__)))
return os.path.join(base_path, relative_path)
bild = resource_path("CAESAR.png")
К сожалению, следующие шаги, указанные в ссылке, не сработали для меня. есть подсказки?