2016-12-07 71 views
0

我有一个看似简单的意图,只是在jupyter笔记本中有一个下拉部件来触发一些简单的动作。它有点作品,但是下面的脚本实际上似乎触发了这个事件三次,我做错了什么?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 

,并与每个选择变得越来越长。

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

回答

2

您需要指定其中你正在听的特质。现在你正在收听全部的特质。 当在下拉列表中选择一个项目时,一些私人特质正在改变,引发回调。

为了避免这种情况,指定要听与names kwarg性状(可以是性状名称或特性名称的列表)

select_variable.observe(get_and_plot, names='value')