You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PySimpleGUI调用函数时GUI崩溃且无控制台报错问题求助

解决PySimpleGUI崩溃无错误输出的问题

核心原因

你的代码崩溃是因为输入框获取的是字符串类型,直接传入add函数和整数3相加会触发TypeError,但由于事件循环中未捕获异常,程序直接终止,导致控制台看不到错误信息。

解决方案:添加异常捕获

在事件处理逻辑中加入try-except块,捕获并打印异常到控制台,同时也可以在GUI中显示错误提示,这样即使GUI出现问题,也能通过控制台获取具体错误信息。

修改后的代码:

import PySimpleGUI as sg

def add(x):
    return x + 3

sg.theme('DarkAmber')
layout = [  
            [sg.Text('Enter a number'), sg.Input(key='-INPUT-')],
            [sg.Button('Calculate'), sg.Button('Cancel')],
            [sg.Text('Result:'), sg.Text('', key='-OUTPUT-')]
        ]
window = sg.Window('AAC', layout)

while True:
    event, values = window.read()
    if event in (sg.WINDOW_CLOSED, 'Cancel'):
        break
    elif event == 'Calculate':
        v = values['-INPUT-']
        try:
            # 尝试执行函数并更新结果
            result = add(int(v))  # 保留你提到的int转换,也可以去掉看错误提示
            window['-OUTPUT-'].update(result)
        except Exception as e:
            # 打印错误到控制台
            print(f"错误信息: {str(e)}")
            # 在GUI中显示错误
            window['-OUTPUT-'].update(f"错误: {str(e)}")

window.close()

关键说明

  • 使用try-except包裹可能出错的代码段,能捕获所有类型的异常,并将错误信息输出到控制台,方便排查复杂函数的问题。
  • 把原代码中的sg.Output换成sg.Text组件,更适合显示结果或错误信息,避免重定向控制台输出带来的同步问题。
  • 即使去掉int(v)的转换,控制台也会打印出TypeError: can only concatenate str (not "int") to str的错误信息,清晰定位问题。

内容的提问来源于stack exchange,提问作者sunhearth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 12:40:37