如何通过代码而非用户操作修改PySimpleGUI.Combo显示值
PySimpleGUI实现Combo组件Apply保存、Reset重置功能
实现目标
- 构建下拉选择组件组,配置统一的Apply按钮,点击时保存所有下拉框的当前选中值
- 配置Reset重置按钮,点击后丢弃上次Apply点击后产生的所有未保存修改,将组件恢复到上次保存的状态
核心技术问题
如何通过代码逻辑而非用户手动操作,修改sg.Combo下拉组件的当前显示值?
最小复现代码
# Python3环境请将导入语句改为 import PySimpleGUI as sg import PySimpleGUI27 as sg if __name__ == "__main__": saved_val = '' # 存储上次Apply时保存的下拉框值 layout = [ [sg.Combo(['', 'opt1', 'opt2', 'opt3'], key='_combo_key_'), sg.Button('Apply')], [sg.Button('Reset'), sg.Button('Exit')] ] window = sg.Window('功能演示', layout) while True: event, values = window.read() # 处理窗口关闭事件 if event in (sg.WIN_CLOSED, 'Exit'): break if event == 'Apply': # 点击Apply时保存当前下拉框选中值 saved_val = values['_combo_key_'] elif event == 'Reset': # 点击Reset时将下拉框显示值恢复为上次保存的值 window['_combo_key_'].Update(value=saved_val) window.close()
实现说明
- 所有PySimpleGUI组件都支持通过
window[组件key]的方式获取组件实例,调用实例的Update()方法即可直接修改组件状态,无需用户手动操作 - 针对多下拉框的实际场景,只需要用字典存储所有下拉框在Apply点击时的选中值,Reset时遍历字典批量调用对应Combo组件的
Update()方法即可完成批量重置 - 注意
Update()方法传入的value必须是Combo下拉选项列表中存在的值,否则会出现显示异常
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

