Мне нужна функция «добавить новую группу элементов управления» в панель управления, созданную с помощью PySimpleGUI. Каждый раз выбирается тип группы элементов управления, поэтому ее нельзя предопределить аналогично тому, как описано в этот ответ на Как отображать различные макеты на основе нажатий кнопок в графическом интерфейсе PySimple? (Постоянный цикл окна)
Для краткости я абстрагировался от проблемы до кнопки, которая должна добавлять ползунок при каждом нажатии.
Я пытался обновить, используя window.Layout
, но это отклонено, потому что оно повторно использует существующие объекты. Я пробовал copy.deepcopy
, но это тоже не помогло.
Есть ли способ динамически добавить новую группу элементов управления (несколько раз), указанную путем выбора из списка параметров?
import PySimpleGUI as sg
s = {'range': (2,6), 'resolution': 0.2, 'default_value': 5,
'size': (20,15), 'orientation': 'horizontal',
'font': ('Helvetica', 8), 'enable_events': True}
layout = [[sg.Slider(**s, key='hi'), sg.Button('Add Slider')]]
window = sg.Window('wow!', layout=layout, background_color="gray",
size=(400, 200))
while True:
event, values = window.read()
if event is None:
break
print(event, values)
if event == 'Add Slider':
layout[0][0].Update(value=8.0 - values['hi'])
layout.append(sg.Slider(**s))
window.layout(layout)
Сообщение об ошибке:
# UserWarning: *** YOU ARE ATTEMPTING TO RESUSE AN ELEMENT IN YOUR LAYOUT!
Once placed in a layout, an element cannot be used in another layout. ***`