Как pysimple gui может выдать всплывающее сообщение, если скрипт потерпел крах? - PullRequest
1 голос
/ 25 января 2020

Я настраиваю программу, используя интерфейс pysimple gui.

Программа основана на вводе пользователем. Если входные данные имеют неправильный формат или написаны с ошибками, сценарий обработает sh.

. Теперь, когда сценарий завершается сбоем, GUI остается открытым без признаков того, что что-то не так.

Есть ли способ отобразить всплывающее предупреждение и попросить пользователя выйти из интерфейса и перезапустить скрипт?

Ответы [ 2 ]

1 голос
/ 05 марта 2020

Следующий код проверяет, является ли данный ввод числом или нет, и выдает операционную поговорку (число или не число):

import PySimpleGUI as sg
layout = [[sg.Text('Check if number or not')],
          [sg.Input()],
          [sg.Button('Check'), sg.Button('Exit')]]
window = sg.Window('Checker', layout)
while True:
    event, values = window.read()
    if event in  (None, 'Exit'):
        break
    if event == 'Check':
        try:
            int(values[0])
            sg.Popup('It is a number')
        except:
            sg.Popup('Not a number')
0 голосов
/ 13 марта 2020

В последнее время я добавляю более масштабную обработку cra sh для сценариев, запускаемых в системном трее, или для постоянно работающих виджетов. Программы такого типа не имеют системной консоли.

В этом примере показано 2 windows при возникновении проблемы. Один из них - «всплывающее окно с ошибкой», другой выводит в «Окно отладки». Преимущество использования окна отладки состоит в том, что вы можете копировать и вставлять из него. Вы можете выбрать один из других в зависимости от ваших предпочтений.

import traceback
import PySimpleGUI as sg

layout = [  [sg.Text('My Window')],
            [sg.Input(key='-IN-'), sg.Text(size=(12,1), key='-OUT-')],
            [sg.Button('Go'), sg.Button('Exit')]  ]

window = sg.Window('Window Title', layout)

try:
    while True:             # Event Loop
        event, values = window.read()
        window.bad()
        print(event, values)
        if event in (None, 'Exit'):
            break
        if event == 'Go':
            window['-OUT-'].update(values['-IN-'])
    window.close()
except Exception as e:
    tb = traceback.format_exc()
    sg.Print(f'An error happened.  Here is the info:', e, tb)
    sg.popup_error(f'AN EXCEPTION OCCURRED!', e, tb)

enter image description here

enter image description here

...