Jupyter下拉式小部件触发操作

4

我有一个看似简单的意图,在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
请注意,上述代码中的 clear_output 应该改为 clear_output() - JeremyDouglass
1个回答

8
您需要指定要监听的特征。目前您正在监听所有特征。 当在下拉列表中选择一项时,一些私有特征在幕后被修改,这将触发回调函数。
为避免这种情况,请使用“names”关键字参数来指定要监听的特征(可以是特征名称或特征名称列表)。
select_variable.observe(get_and_plot, names='value')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接