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

时间:2019-01-29 00:58:54

标签: jupyter-notebook ipython ipywidgets

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

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

None

理想情况下,我想要实现的是在不使用全局变量的情况下更改小部件后自动更改x值,并且还更改了一些先前定义的变量。会是这样的:

string.punctuation

1 个答案:

答案 0 :(得分:1)

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

import ipywidgets as widgets

class Updated:

    def __init__(self):
        self.widget_value = None
        self.derived_value = None

    def update(self, val_dict) -> None:
        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 on_change(v):
    update_class.update(v)
slider.observe(on_change, names='value')
display(slider)

然后您可以查看update_class.widget_valueupdate_class.derived_value在移动滑块时的变化。