Как сделать исполняемый файла python, который отрывает другие python файлы?
У меня есть код
import PySimpleGUI as sg
import subprocess
sg.theme('DarkBlue')
layout = [[sg.Button('Кнопка 1', expand_x=True, font=('Courier 10', 14))],
[sg.Button('Кнопка 2', expand_x=True, font=('Courier 10', 14))],
[sg.Button('Кнопка 3', expand_x=True, font=('Courier 10', 14))],
[sg.Button('Кнопка 4', expand_x=True, font=('Courier 10', 14))]]
window = sg.Window("Программа с кнопками", layout)
while True:
event, values = window.read()
if event == sg.WINDOW_CLOSED:
break
elif event == "Кнопка 1":
subprocess.Popen(['python', "cnopka1.py"])
elif event == "Кнопка 2":
subprocess.Popen(['python', "cnopka2.py"])
elif event == "Кнопка 3":
subprocess.Popen(['python', "cnopka3.py"])
elif event == "Кнопка 4":
subprocess.Popen(['python', "cnopka4.py"])
window.close()
Пытаюсь его сделать исполняемым при помощи auto-py-to-exe и pyinstaller. Файл открывается нормально, но кнопки не работают. При нажатии на кнопки, программа вылетает. При нажатии на кнопки должны запускать интерфейсы других python файлов с интерфейсами. Возможно ли вообще сделать исполняемый файл для python файла, который в себе содержит еще другие python файлы?
Ответы (1 шт):
Автор решения: Chorkov
→ Ссылка
Лучше импортируйте код из других файлов как модули:
cnopka1.py
...
def main():
# сюда переносим код, который ранее был на уровне модуля
...
# оставляем возможность запустить файл отдельно, для упрощения отладки.
if __name__ == '__main__' :
main()
main.py
...
import cnopka1
import cnopka2
import cnopka3
...
...
elif event == "Кнопка 1":
cnopka1.main()
elif event == "Кнопка 2":
cnopka2.main()
...