2016-12-07 70 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')