首页 > 解决方案 > 创建 n 长度的小部件列表,其中 n 由另一个小部件设置

问题描述

我想让尺寸小部件的输出确定在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])

标签: python-3.xipywidgets

解决方案


我这样做了,不确定这是一个很好的解决方案,但有点工作:

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])

推荐阅读