def _interactive(interact_f, kwargs_widgets): # this is a modified version of interactive() in ipywidget.widgets.interaction container = Box(_dom_classes=['widget-interact']) container.children = [w for w in kwargs_widgets if isinstance(w, DOMWidget)] def call_f(name=None, old=None, new=None): kwargs = dict((widget._kwarg, widget.value) for widget in kwargs_widgets) try: interact_f(**kwargs) except Exception as e: container.log.warn("Exception in interact callback: %s", e, exc_info=True) for widget in kwargs_widgets: widget.on_trait_change(call_f, 'value') container.on_displayed(lambda _: call_f(None, None, None)) return container