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
相关产品推荐
相关产品推荐

