jupyter下拉小部件触发器动作

时间:2016-12-07 13:02:47

标签: jupyter ipywidgets

我有一个看似简单的意图,只需在jupyter笔记本中有一个下拉小部件来触发一些简单的操作。它有点工作,但是下面的脚本实际上似乎触发了三次事件,我做错了什么?

import ipywidgets as widgets
from IPython.display import display, clear_output
vardict = ["var1","var2"]
select_variable = widgets.Dropdown(
    options=vardict,
    value=vardict[0],
    description='Select variable:',
    disabled=False,
    button_style=''
)
def get_and_plot(b):
    clear_output
    print(select_variable.value)

display(select_variable)
select_variable.observe(get_and_plot)

当我从下拉列表中选择项目时的输出类似于

var1
var2
var2

每次选择都会变得更长。

我想要的是每种选择只触发一次动作(打印或其他)的方法,我该如何实现?

1 个答案:

答案 0 :(得分:5)

您需要指定您正在收听的特征。现在你正在倾听所有特征。 当在下拉列表中选择一个项目时,会在引擎盖下更改一些私有特征,从而触发回调。

要避免这种情况,请使用select_variable.observe(get_and_plot, names='value') kwarg指定要收听的特征(可以是特征名称或特征名称列表)

(?m)(?<_KEY_1>\w+[^:]+?):\s(?<_VAL_1>[^\r\n]+)$