我创建了一个 PySimpleGUI 组合框,其代码简化为:
combo_list = ['Choice 1', 'Choice 2']
layout = [[sg.Combo(combo_list, default_value=combo_list[0], key='-COMBO-', enable_events=True)]]
用户可以将项目添加到下拉列表中,当他退出应用程序时,我保存更新后的combo_list,以便在程序下次运行时可以使用它。目前,我正在通过将用户创建的任何新条目添加到我的combo_list 数组中来执行此操作。但是有没有一种方法可以简单地从 Combo 元素本身读回更新的参数“值”,而不必通过更新combo_list 数组来隐藏它?
使用
window['-COMBO-'].get()
读回用户选择的值没有问题,但尽管检查了 PySimpleGUI 文档,更一般地说,我无法找到读取值列表的方法。如果这是不可能的,每当用户添加项目时我将继续更新combo_list数组。但如果知道的话就好了。
得到
返回 Combo 的当前(现在)值。不要将此作为阅读组合的正常方式!您应该使用调用 window.read 时的值。如果您使用它,就知道您在做什么。
要获取Combo元素的
combo_list
,可以通过tkinter代码获取,如window['-COMBO-'].widget['values']
。
import PySimpleGUI as sg
combo_list = ['Choice 1', 'Choice 2']
layout = [[sg.Combo(combo_list, default_value=combo_list[0], key='-COMBO-', enable_events=True)]]
window = sg.Window("Title", layout)
while True:
event, values = window.read()
if event == sg.WIN_CLOSED:
break
print(event, values)
print(window['-COMBO-'].widget['values'])
window.close()
-COMBO- {'-COMBO-': 'Choice 2'}
('Choice 1', 'Choice 2')