Popup 如果脚本崩溃,pysimplegui如何给出弹出消息?

Popup 如果脚本崩溃,pysimplegui如何给出弹出消息?,popup,pysimplegui,Popup,Pysimplegui,我正在使用pysimplegui接口设置一个程序 该程序基于用户输入。如果输入格式错误或拼写错误,脚本将崩溃 到目前为止,当脚本崩溃时,GUI保持打开状态,没有任何错误迹象 是否有方法显示弹出警告并告诉用户退出界面并重新启动脚本?以下代码将检查给定输入是否为数字,并给出opup语句(数字或非数字): 以下代码将检查给定输入是否为数字,并给出opup语句(数字或非数字): 最近,我为在系统托盘中运行的脚本或连续运行的小部件添加了更大规模的崩溃处理。这类程序没有系统控制台 此示例显示发生问题时的两个

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

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

到目前为止,当脚本崩溃时,GUI保持打开状态,没有任何错误迹象


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

以下代码将检查给定输入是否为数字,并给出opup语句(数字或非数字):


以下代码将检查给定输入是否为数字,并给出opup语句(数字或非数字):


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

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

导入回溯
将PySimpleGUI导入为sg
布局=[[sg.Text('我的窗口')],
[sg.Input(key='-IN-')、sg.Text(size=(12,1)、key='-OUT-'),
[sg.按钮('Go')、sg.按钮('Exit')]]
窗口=sg.window('窗口标题',布局)
尝试:
为True时:#事件循环
事件,值=window.read()
窗户坏了
打印(事件、值)
如果事件处于(无,'退出'):
打破
如果事件=='Go':
窗口['-OUT-']。更新(值['-IN-'])
window.close()
例外情况除外,如e:
tb=回溯。格式_exc()
打印(发生错误。以下是信息:',e,tb)
sg.popup_错误(发生f'AN异常!',e,tb)


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

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

导入回溯
将PySimpleGUI导入为sg
布局=[[sg.Text('我的窗口')],
[sg.Input(key='-IN-')、sg.Text(size=(12,1)、key='-OUT-'),
[sg.按钮('Go')、sg.按钮('Exit')]]
窗口=sg.window('窗口标题',布局)
尝试:
为True时:#事件循环
事件,值=window.read()
窗户坏了
打印(事件、值)
如果事件处于(无,'退出'):
打破
如果事件=='Go':
窗口['-OUT-']。更新(值['-IN-'])
window.close()
例外情况除外,如e:
tb=回溯。格式_exc()
打印(发生错误。以下是信息:',e,tb)
sg.popup_错误(发生f'AN异常!',e,tb)


使用try/except块捕获错误,这样程序就不会崩溃。当发现错误时,始终可以显示弹出窗口。您必须进行输入验证,以便程序不会崩溃。这是GUI开发的基本概念。也许用简单的演示程序崩溃是可以的,但是对于任何真实的东西,您必须添加错误检查。非常感谢您!这是我发布的关于“意外错误的最终安全解决方案”的答案。简单的方法是将事件循环放入try块中。使用try/except块捕获错误,这样程序就不会崩溃。当发现错误时,始终可以显示弹出窗口。您必须进行输入验证,以便程序不会崩溃。这是GUI开发的基本概念。也许用简单的演示程序崩溃是可以的,但是对于任何真实的东西,您必须添加错误检查。非常感谢您!这是我发布的关于“意外错误的最终安全解决方案”的答案。简单的方法是将事件循环放入try块中。
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')