Jupyter notebook ipywidgets:在更改小部件值后自动更新变量并运行代码

Jupyter notebook ipywidgets:在更改小部件值后自动更新变量并运行代码,jupyter-notebook,ipython,ipywidgets,Jupyter Notebook,Ipython,Ipywidgets,我一直在尝试在修改ipywidget后自动更新变量并运行代码段 到目前为止,我找到的唯一部分解决方案是按照github()上的示例声明一个全局变量: 理想情况下,我试图实现的是在不使用全局变量的情况下更改小部件后自动更改x值,以及更改一些先前定义的变量。应该是这样的: x = 5 y = [] slider = widgets.IntSlider() slider.value = x def on_change(v): x = v['new'] y.append(x) slider.

我一直在尝试在修改ipywidget后自动更新变量并运行代码段

到目前为止,我找到的唯一部分解决方案是按照github()上的示例声明一个全局变量:

理想情况下,我试图实现的是在不使用全局变量的情况下更改小部件后自动更改x值,以及更改一些先前定义的变量。应该是这样的:

x = 5
y = []
slider = widgets.IntSlider()
slider.value = x
def on_change(v):
   x = v['new']
   y.append(x)
slider.observe(on_change, names='value')
display(slider)

实现这一点的一种方法是创建一个接受新窗口小部件值的类,并进行派生计算。我已经做了一个简单的添加,但您可以附加到列表中

将IPyWidget作为小部件导入
课程更新:
定义初始化(自):
self.widget_值=无
self.derived_值=无
def更新(自我、价值记录)->无:
self.widget_value=val_dict['new']
self.derived_value=self.widget_value+10
update_class=Updated()
x=5
y=[]
slider=widgets.IntSlider()
slider.value=x
更改时的def(v):
更新类。更新(v)
滑块。观察(更改时,名称='value')
显示(滑块)
然后,您可以看到移动滑块时,
update\u class.widget\u value
update\u class.derived\u value
是如何变化的

x = 5
y = []
slider = widgets.IntSlider()
slider.value = x
def on_change(v):
   x = v['new']
   y.append(x)
slider.observe(on_change, names='value')
display(slider)