Я лично считаю, что хранить данные в отдельном файле - самый чистый способ. Вы можете, например, просто создать csv
или json
или простой текстовый файл из другого приложения и просто поместить его в правильный каталог.
Кажется, что pysimple GUI сам по себе не создает исполняемые файлы , похоже, используется pyinstaller
(https://pysimplegui.readthedocs.io/en/latest/#creating -a- windows -exe-file )
Pyinstaller позволяет добавлять файлы, отличные от python (например, в ваш случай json или файлы csv) в его исполняемый файл.
При запуске исполняемого файла создается временный каталог, и все python и добавленные файлы будут извлечены и сохранены в нем.
Вы должны использовать переключатель --add-data *source_path*:**destination_path**
Пример ниже показывает, как это сделать.
просто создайте в каталоге, где установлен ваш python скрипт, каталог с именем files
и поместите в него свои файлы данных, которые вы хотите связать с вашим приложением.
Для этого примера это будет один файл с именем files/info.csv
Чтобы этот пример работал, он должен содержать хотя бы один строка.
Тогда создайте файл python (для этого теста со следующим содержимым)
пример имени файла: sg_w_fread.py
import os
import sys
import PySimpleGUI as sg
if getattr(sys, "frozen", False):
# for executable mode
BASEDIR = sys._MEIPASS
else:
# for development mode
BASEDIR = os.path.dirname(os.path.realpath(__file__))
print("BASEDIR =", BASEDIR)
fname = os.path.join(BASEDIR, "files", "info.csv")
# just for debugging
print("FNAME", repr(fname))
print(os.path.isfile(fname))
sg.theme('DarkAmber') # Add a touch of color
# read something from a file
with open(fname) as fin:
txt = fin.read().split("\n")[0]
layout = [ [sg.Text("first line of file is '" + txt + "'")], # display something from the file
[sg.Text('Enter something on Row 2'), sg.InputText()],
[sg.Button('Ok'), sg.Button('Cancel')] ]
window = sg.Window('Window Title', layout)
while True:
event, values = window.read()
if event in (None, 'Cancel'): # if user closes window or clicks cancel
break
print('You entered ', values[0])
window.close()
и введите следующую команду для создания исполняемого файла:
pyinstaller -wF sg_w_fread.py --add-data files:files