我制作了一个简单的Python3 3程序,它使用PySimpleGUI创建Windows程序。这个程序还包含一个图片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创建一个windows-exe文件(1.3版):
python -m pysimplegui-exemaker.pysimplegui-exemaker
当图片CAESAR.png与exe文件位于同一个文件夹中时,编译的exe文件运行正常。如果图片与exe文件不在同一文件夹中,则会收到一条错误消息。问题:我如何强迫pysimplegui-exemaker将图片文件“嵌入”到exe文件中,这样这个exe文件就可以正常运行,而不需要在同一个文件夹中添加额外的CAESAR.png?
根据I @BhargavDesai给出的答案和链接,为了得到一个相对路径,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")不幸的是,链接给出的下列步骤对我无效。有什么暗示吗?
发布于 2020-07-10 02:25:31
首先,做这个
import base64
with open('CAESAR.png', 'rb') as f:
print(base64.b64encode(f.read()))接下来,复制上面的输出并定义一个变量
CAESAR = b'base64data...'
layout = [[Sg.Image(data=CAESAR)],
...发布于 2020-06-19 09:04:48
为了解决这个问题,我们需要具体地告诉Pyinstaller,我们有额外的文件需要与应用程序“捆绑”。
我们还需要使用“相对”路径,以便应用程序在作为Python脚本或Frozen运行时能够正常运行。
您可以在这里找到更详细的答案:Bundling data files with PyInstaller (--onefile)
发布于 2021-12-11 15:07:10
几周前,PyInstaller项目发布了一个功能更全面的与PySimpleGUI接口的程序.psgcompiler。你可以安装它。它也可以在PySimpleGUI GitHub回购账户下使用。
https://stackoverflow.com/questions/62455625
复制相似问题