如何使用PySimpleGUI获取输入并存储至变量?代码调试求助
问题分析与解决方法
你的代码存在3个关键问题,修正后即可正常实现输入存储与显示功能:
- 错误直接用
Output类访问窗口元素,PySimpleGUI需要通过元素的key或索引定位目标元素 - 未在正确时机(点击Ok按钮时)获取输入值,而是每次窗口读取后都执行赋值,会导致初始阶段报错
- 误解了
Input()的作用:它是创建输入框元素的方法,而非直接获取输入值的方式,输入内容需通过window.read()返回的values对象获取
修正后的完整代码
from PySimpleGUI import * layout = [ [Text("Name: "), Input(key="-INPUT-")], # 给输入框添加key标识 [Ok(key="-OK-")], [Text("You Put: "), Output(key="-OUTPUT-")] # 给输出框添加key标识 ] window = Window("Just a window", layout) while True: event, values = window.read() # 点击窗口关闭按钮时退出循环 if event == WINDOW_CLOSED: break # 点击Ok按钮时,获取输入值并更新输出内容 if event == "-OK-": name = values["-INPUT-"] # 通过key获取输入框的内容 window["-OUTPUT-"].update(value=name) # 通过key更新输出框的显示 window.close()
关键修改说明
- 给
Input和Output元素添加key参数:用自定义字符串标识元素,比索引更直观,避免元素顺序变化导致的错误 - 将输入值获取与输出更新逻辑放到
Ok按钮的事件判断中:只有用户主动确认时才执行操作,避免窗口初始化阶段的空值问题 - 通过
values["key名称"]获取对应元素内容:这是PySimpleGUI获取用户输入的标准方式
内容的提问来源于stack exchange,提问作者zer0
相关产品推荐
相关产品推荐

