Кнопка PySimple GUI, которая добавляет еще один слайдер - PullRequest
0 голосов
/ 28 марта 2020

Мне нужна функция «добавить новую группу элементов управления» на панель управления, созданную с помощью PySimple GUI. Каждый выбирает , какой тип группы элементов управления каждый раз, поэтому он не может быть предопределен так же, как описано в этот ответ до Как отображать различные макеты на основе кнопки щелчки в PySimple GUI? (Постоянное окно l oop)

Для краткости я изложил здесь проблему полностью вплоть до кнопки, которая должна добавлять новый ползунок при каждом нажатии.

Я пытался обновить с помощью window.Layout, но это отклонено, потому что он использует существующие объекты. Я попробовал copy.deepcopy, но это также не помогло.

Есть ли способ динамически добавить новую группу элементов управления (несколько раз), указанную путем выбора из списка параметров?

button should add another slider


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. ***`

1 Ответ

1 голос
/ 28 марта 2020

Не могли бы вы попробовать использовать функцию?

def Btn():
    return sg.Slider(**s)
layout.append(Btn())

Решение на Github

...