PySimpleGUI创建第三个窗口不显示问题求助
问题:PySimpleGUI第三个窗口无法显示,必须调用read()才能正常显示
我发现必须调用window3.read()才能让第三个窗口显示。使用PySimpleGUI创建第三个窗口时,代码无报错但窗口不显示,程序直接结束。原本想要实现一个供用户选座的复选框表格,测试后代码可正常执行(后续print语句能输出),但即使改为仅显示简单文本,窗口仍无法正常显示。
相关代码:
layout3 = [[sg.Text('Test')] window3 = sg.Window('Choosing seats',layout3,element_justification='c')
解决方法
在PySimpleGUI中,窗口对象创建后必须调用read()方法,才能启动窗口的事件循环,让窗口保持显示状态。read()方法会阻塞程序,等待用户交互(比如点击关闭按钮、触发其他控件事件),否则程序会直接执行完后续代码后退出,窗口来不及渲染就被销毁了。
修正后的代码示例
import PySimpleGUI as sg # 补全布局的闭合方括号(原代码存在语法错误) layout3 = [[sg.Text('Test')]] window3 = sg.Window('Choosing seats', layout3, element_justification='c') # 调用read()启动事件循环,等待用户操作 event, values = window3.read() # 操作完成后关闭窗口,释放资源 window3.close()
关键说明
read()是PySimpleGUI窗口的核心方法,负责处理窗口事件并维持窗口存活,没有它窗口会瞬间关闭- 如果只是需要短暂显示窗口,可结合
time.sleep()和close(),但这种场景在实际交互中很少见 - 多窗口场景下,要注意事件循环的管理,避免出现窗口阻塞或无法响应的问题
内容的提问来源于stack exchange,提问作者Someone Here
相关产品推荐
相关产品推荐

