Использование динамического количества ползунков с ipywidgets

Я хочу вызвать функцию в интерактивном режиме, используя ipywidgets с динамическим количеством ползунков. Я умею отображать.

n_alphas = 3
alphas = [
    widgets.FloatSlider(min=-1, max=1, step=1e-3, description=f'$z_{i}$', orientation='vertical')
    for i in range(n_alphas)
]
ui = widgets.HBox(alphas)
display(ui)

Это правильно отображает три вертикальных ползунка, как определено n_alphas.

Использование динамического количества ползунков с ipywidgets

К сожалению, я не могу привязать этот пользовательский интерфейс с динамическим количеством ползунков к какой-либо функции. Я пробовал следующие варианты, но ничего не получилось:

out = widgets.interactive_output(print_alphas, alphas)
display(ui, out)

Что нужно для привязки списка ползунков, определенных alphas, к функции print_alphas и как должна быть определена сама эта функция?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
20
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я бы предложил отдельно мониторинг ползунки для доступа ко всем альфа-каналам из этой функции монитора:

# monitor function, reporting both the changed value and all other values
def handle_slider_change(change):
    values = [alpha.value for alpha in alphas]
    caption.value = (
        f'The slider {change.owner.description} has a value of {change.new}. '
        f'The values of all sliders are {values}'
    )

# create sliders
n_alphas = 3
alphas = [
    widgets.FloatSlider(min=-1, max=1, step=1e-3, description=f'$z_{i}$', orientation='vertical')
    for i in range(n_alphas)
]
# register slides
for widget in alphas:
    widget.observe(handle_slider_change, names='value')

# display ui
ui = widgets.HBox(alphas)
caption = widgets.Label(value='No change was made yet.')
display(caption, ui)

Спасибо, работает как задумано. Для всех, кто интересуется, как интегрировать это с интерактивным графиком matplotlib, есть %matplotlib widget, и большинство типов графиков поддерживают такие функции, как set_data, которые позволяют быстро обновлять ранее установленные графики.

Felix 17.05.2022 10:54

Другие вопросы по теме