2

Is it possible to link several widgets to one argument?
I have these three boolean widgets:

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

The function I'm trying to call with interact has an argument that is a list of three bools. For example:

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

Now I tried using interact by e.g. interact(test, x=fixed(3), data=[w1, w2, w3]); but it gives the error

'Checkbox' object is not iterable

Is there any way that I can link those three widgets to the single argument data? I have to keep this argument as a list of bools.

Colle
  • 154
  • 1
  • 11

1 Answers1

2

You can do something like this:

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);
ac24
  • 5,325
  • 1
  • 16
  • 31