import traitlets
import ipywidgets as widgets
mi, ma, s, v = 1, 100, 2, 5
i = 500
player = widgets.Play(min=mi, max=ma, step=s, value=v, interval=i)
slider = widgets.FloatSlider(min=mi, max=ma, step=s, value=v)
# traitlets.link((player, 'value'), (slider, 'value'))
widgets.jslink((player, 'value'), (slider, 'value'))
w = widgets.HBox([slider, player])
def on_change1(change):
print('1', change, player.value)
def on_change2(change):
print('2', change, slider.value)
slider.observe(on_change1, 'value')
player.observe(on_change2, 'value')
w1 {'name': 'value', 'old': 5.0, 'new': 7.0, 'owner': <ipywidgets.widgets.widget_float.FloatSlider object at 0x1196c4278>, 'type': 'change'} 7 1 {'name': 'value', 'old': 7.0, 'new': 9.0, 'owner': <ipywidgets.widgets.widget_float.FloatSlider object at 0x1196c4278>, 'type': 'change'} 9 1 {'name': 'value', 'old': 9.0, 'new': 11.0, 'owner': <ipywidgets.widgets.widget_float.FloatSlider object at 0x1196c4278>, 'type': 'change'} 11
Olivier@Central:~ (3) $ conda list ipyw
# packages in environment at /Users/Olivier/anaconda3:
#
ipywidgets 6.0.0 py36_0 conda-forge