首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用PySimpleGUI和pysimplegui-exemaker从python生成exe文件

用PySimpleGUI和pysimplegui-exemaker从python生成exe文件
EN

Stack Overflow用户
提问于 2020-06-18 17:13:54
回答 3查看 5.8K关注 0票数 3

我制作了一个简单的Python3 3程序,它使用PySimpleGUI创建Windows程序。这个程序还包含一个图片CAESAR.png,它与我的python位于同一个文件夹中。下面是布局代码的部分:

代码语言:javascript
复制
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做了以下工作:

代码语言:javascript
复制
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")

不幸的是,链接给出的下列步骤对我无效。有什么暗示吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-07-10 02:25:31

首先,做这个

代码语言:javascript
复制
import base64

with open('CAESAR.png', 'rb') as f:
    print(base64.b64encode(f.read()))

接下来,复制上面的输出并定义一个变量

代码语言:javascript
复制
CAESAR = b'base64data...'
layout = [[Sg.Image(data=CAESAR)],
...
票数 2
EN

Stack Overflow用户

发布于 2020-06-19 09:04:48

为了解决这个问题,我们需要具体地告诉Pyinstaller,我们有额外的文件需要与应用程序“捆绑”。

我们还需要使用“相对”路径,以便应用程序在作为Python脚本或Frozen运行时能够正常运行。

您可以在这里找到更详细的答案:Bundling data files with PyInstaller (--onefile)

票数 2
EN

Stack Overflow用户

发布于 2021-12-11 15:07:10

几周前,PyInstaller项目发布了一个功能更全面的与PySimpleGUI接口的程序.psgcompiler。你可以安装它。它也可以在PySimpleGUI GitHub回购账户下使用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62455625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档