Исполняемая сборка мигает и завершается - PullRequest
0 голосов
/ 01 ноября 2018

Я бы хотел создавать простые приложения с графическим интерфейсом на основе Python , которые можно распространять среди моих коллег. В этом процессе я узнал о PySimpleGUI27 для версии Python 2.7.

Ниже приведен простой код, который создает окно с параметрами меню. Затем я использовал PyInstaller , чтобы создать сборку и протестировать ее. Однако, когда я запускаю сборку .exe из папки dist, он просто мигает и исчезает. Но когда я запускаю скрипт GUI из среды Python IDE, я действительно могу видеть функцию GUI.

import PySimpleGUI27 as sg

sg.ChangeLookAndFeel('LightGreen')
sg.SetOptions(element_padding=(0, 0))

# ------ Menu Definition ------ #
menu_def = [['File', ['Open', 'Save', 'Exit']],
            ['Edit', ['Paste', ['Special', 'Normal', ], 'Undo'], ],
            ['Help', 'About...'], ]

# ------ GUI Definition ------ #
layout = [
    [sg.Menu(menu_def, )],
    [sg.Output(size=(60, 20))]
]

window = sg.Window("Windows-like program", default_element_size=(12, 1), auto_size_text=False, auto_size_buttons=False,
                   default_button_element_size=(12, 1)).Layout(layout)

# ------ Loop & Process button menu choices ------ #
while True:
    event, values = window.Read()
    if event == None or event == 'Exit':
        break
    print('Button = ', event)
    # ------ Process menu choices ------ #
    if event == 'About...':
        sg.Popup('About this program', 'Version: 1.0', 'PyDist: Anaconda27')
    elif event == 'Open':
        filename = sg.PopupGetFile('file to open', no_window=True)
        print(filename)

GUI генерируется при запуске скрипта 1

Когда я пытаюсь запустить exe-файл, он мигает и исчезает. Пожалуйста, ознакомьтесь с потрясающим GIF здесь . Любой совет приветствуется.

Запуск EXE из папки с помощью Powershell.

PS C:\Users\user\AppData\Local\Continuum\anaconda3\envs\XCAL\Scripts\dist\PySimpleGUI_00> .\PySimpleGUI_00.exe
Traceback (most recent call last):
  File "PySimpleGUI_00.py", line 1, in <module>
  File "c:\users\user\appdata\local\temp\pip-install-qrr1qq\PyInstaller\PyInstaller\loader\pyimod03_importers.py", line 395, in load_module
  File "site-packages\PySimpleGUI27\__init__.py", line 2, in <module>
  File "c:\users\user\appdata\local\temp\pip-install-qrr1qq\PyInstaller\PyInstaller\loader\pyimod03_importers.py", line 395, in load_module
  File "site-packages\PySimpleGUI27\PySimpleGUI27.py", line 13, in <module>
  File "site-packages\future\standard_library\__init__.py", line 459, in install_aliases
ImportError: No module named UserList
[15328] Failed to execute script PySimpleGUI_00

1 Ответ

0 голосов
/ 02 ноября 2018

Я рекомендую использовать версию Python 3 библиотеки PySimpleGUI в дополнение к использованию Python 3 для запуска pyinstaller.

Запустите pyinstaller с этими параметрами

pyinstaller -wF demo.py

Ваш пример должен быть таким, чтобы использовать простой импорт PySimpleGUI:

import PySimpleGUI as sg

sg.ChangeLookAndFeel('LightGreen')
sg.SetOptions(element_padding=(0, 0))

# ------ Menu Definition ------ #
menu_def = [['File', ['Open', 'Save', 'Exit']],
            ['Edit', ['Paste', ['Special', 'Normal', ], 'Undo'], ],
            ['Help', 'About...'], ]

# ------ GUI Definition ------ #
layout = [
    [sg.Menu(menu_def, )],
    [sg.Output(size=(60, 20))]
]

window = sg.Window("Windows-like program", default_element_size=(12, 1), auto_size_text=False, auto_size_buttons=False,
                   default_button_element_size=(12, 1)).Layout(layout)

# ------ Loop & Process button menu choices ------ #
while True:
    event, values = window.Read()
    if event == None or event == 'Exit':
        break
    print('Button = ', event)
    # ------ Process menu choices ------ #
    if event == 'About...':
        sg.Popup('About this program', 'Version: 1.0', 'PyDist: Anaconda27')
    elif event == 'Open':
        filename = sg.PopupGetFile('file to open', no_window=True)
        print(filename)
...