создать список виджетов длиной n, где n задается другим виджетом

#python-3.x #ipywidgets

#python-3.x #ipywidgets

Вопрос:

Я хочу, чтобы выходные данные виджета size определяли количество виджетов, созданных в выходных return_widgets данных функции. Приведенный ниже код работает до определенной степени, но не обновляется при изменении значения intslider .

 import ipywidgets as widgets
def return_widgets(size):
    return [widgets.IntText(value=x) for x in range(size)]

size = widgets.IntSlider(value=3, min=0, max=5, step=1, description='size:')
w = return_widgets(size.value)
widgets.VBox([size, *w])
  

Ответ №1:

Я сделал это, не уверен, что это очень хорошее решение, но вроде работает:

 import ipywidgets as widgets
from IPython.display import display

def return_widgets(size):
    return [widgets.IntText(value=x) for x in range(size)]

out = widgets.Output()
def on_value_change(change):
    out.clear_output()
    with out:
       w = return_widgets(change['new'])
       display(*w)

size = widgets.IntText(value=3, min=1, max=5, description='size')

size.observe(on_value_change, 'value')
widgets.VBox([size, out])