1

我正在使用 pysimplegui 接口设置程序。

该程序基于用户输入。如果输入格式错误或拼写错误,脚本将崩溃。

现在,当脚本崩溃时,GUI 保持打开状态,没有任何迹象表明有问题。

有没有办法显示弹出警告并告诉用户退出界面并重新启动脚本?

4

2 回答 2

6

最近我一直在为系统托盘中运行的脚本或连续运行的小部件添加更大规模的崩溃处理。这类程序没有系统控制台。

此示例显示问题发生时的 2 个窗口。一个是“错误弹出窗口”,另一个打印到“调试窗口”。使用调试窗口的优点是您可以从中复制和粘贴。您可以根据自己的喜好选择其中之一。

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)

在此处输入图像描述

在此处输入图像描述

于 2020-03-13T13:49:22.280 回答
1

下面的代码将检查给定的输入是否是一个数字,并给出一个 opup 说 (number or not an number):

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')
于 2020-03-05T13:06:06.893 回答