我制作了一个简单的Python3程序,使用PySimpleGUI创建了一个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)
目前为止,这个工作还不错。现在我想用pysimplegui-exemaker(版本1.3)制作一个Windows可执行文件:
python -m pysimplegui-exemaker.pysimplegui-exemaker
编译后的exe文件在图片CAESAR.png与exe文件在同一文件夹时能够正常运行。如果图片不在与exe文件相同的文件夹中,则会出现错误消息。 问题:我如何强制pysimplegui-exemaker将图片文件“嵌入”到exe文件中,以便该exe文件在没有额外CAESAR.png的情况下正常运行?
根据I @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")
很遗憾,链接给出的步骤对我没有起作用。有什么提示吗?