Jupyter 交互 ipywidgets:一个参数的几个小部件

Jupyter interact ipywidgets: several widgets for one argument

是否可以link多个小部件到一个参数?
我有这三个布尔小部件:

import ipywidgets as widgets
from ipywidgets import interact, fixed

w1 = widgets.Checkbox(value=False, description='Widget 1')
w2 = widgets.Checkbox(value=False, description='Widget 2')
w3 = widgets.Checkbox(value=False, description='Widget 3')

我试图用 interact 调用的函数有一个参数,它是三个布尔值的列表。 例如:

def test(x, data):
   if all(data):
      # do something

现在我尝试使用交互方式,例如interact(test, x=fixed(3), data=[w1, w2, w3]); 但它给出了错误

'Checkbox' object is not iterable

有什么方法可以将这三个小部件 link 到单个参数 data?我必须将此参数保留为布尔值列表。

你可以这样做:

import ipywidgets as widgets
from ipywidgets import interact, fixed

w1 = widgets.Checkbox(value=False, description='Widget 1')
w2 = widgets.Checkbox(value=False, description='Widget 2')
w3 = widgets.Checkbox(value=False, description='Widget 3')

def test(**kwargs):
    x = kwargs.pop('val')
    if all(kwargs.values()):
        print(x)
      # do something

interact(test, val = fixed(3), w1=w1, w2=w2, w3=w3);