Вы действительно можете обновить до новых значений.У вас есть параметр в вызове обновления не по порядку.Первый параметр value
устанавливает текущее отображаемое значение.Параметр second , values
- это тот, который вам нужен.
Исправлено добавление имени параметра к вашему вызову:
window.Element('_LIST_').Update(values=new_values)
Кроме того, нельзя называть 2 одинаковые клавиши.Они должны быть уникальными среди макета.Я бы назвал другой _OPTIONS_
или что-то в этом духе.
В коде обновления для меню параметров была ошибка, которая была исправлена и проверена в GitHub.Исправление было загружено в PyPI версии 3.27.
Вот ваш код, переработанный и протестированный с использованием последнего кода PySimpleGUI.Я включил дополнительный параметр в вызов OptionMenu.Update, чтобы показать вам, как явно установить
import PySimpleGUI as sg
names = ['Roberta', 'Kylie']
layout = [[sg.Listbox(names, size=(20, 4), key='_LIST_')],
[sg.OptionMenu(names, size=(20, 4), key='_OPT_')]]
window = sg.Window('').Layout(layout).Finalize()
new_values = ['Bill', 'Jeff']
window.Element('_LIST_').Update(values=new_values)
window.Element('_OPT_').Update(values=new_values, value='Jeff')
while True:
event, values = window.Read()
if event is None or event == 'Exit':
break
window.Close()