Sunday, 7 February 2021

Ipywidgets observe method on interactive instead of widget

Both ipython widgets and interactive objects have observe() methods. (See the results of the print statements.) With the following example, I can confirm the actions of the observe() method on a slider widget but not on the interactive (ie) object.

Q: Is there any way to use the interactive's observe method or I have to call separate observe() method on it's all widget components ? If so, why ?

Expected behavior: Printing 'ie change observed' after changing inp1,

from IPython.display import display
import ipywidgets as widgets

int_range0_slider = widgets.IntSlider()
int_range1_slider = widgets.IntSlider()
output = widgets.Output()

def interactive_function(inp0,inp1):
    with output:
        print('ie changed. int_range0_slider: '+str(inp0)+' int_range1_slider: '+str(inp1))
    return

def report_int_range0_change(change):
    with output:
        print('int_range0 change observed'+str(change))
    return

def report_ie_change(change):
    with output:
        print('ie change observed'+str(change))
    return

ie = widgets.interactive(interactive_function, inp0=int_range0_slider,inp1=int_range1_slider)

print(int_range0_slider.observe)
print(ie.observe)
int_range0_slider.observe(report_int_range0_change, names='value')
ie.observe(report_ie_change)

display(int_range0_slider,int_range1_slider,output)

I'm a newbie, any help on the correct usage would be appreciated.



from Ipywidgets observe method on interactive instead of widget

No comments:

Post a Comment