jupyter 下拉小部件触发操作
jupyter dropdown widget trigger action
我有一个看似简单的意图,只是在jupyter notebook中有一个下拉小部件来触发一些简单的操作。它有点工作,但下面的脚本实际上似乎触发了三次事件,我做错了什么?
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)
当我从下拉列表中选择 select 项时,输出类似于
var1
var2
var2
并且随着每个 select 离子变得更长。
我想要的是一种每次 selection 仅触发一次动作(打印或其他)的方法,我该如何实现?
您需要指定您正在收听的 特征。现在您正在收听 所有 特征。
当 select 下拉列表中的一个项目时,一些私有特征在后台被更改,这会触发回调。
为避免这种情况,请使用 names
kwarg 指定要收听的特征(可以是特征名称或特征名称列表)
select_variable.observe(get_and_plot, names='value')
我有一个看似简单的意图,只是在jupyter notebook中有一个下拉小部件来触发一些简单的操作。它有点工作,但下面的脚本实际上似乎触发了三次事件,我做错了什么?
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)
当我从下拉列表中选择 select 项时,输出类似于
var1
var2
var2
并且随着每个 select 离子变得更长。
我想要的是一种每次 selection 仅触发一次动作(打印或其他)的方法,我该如何实现?
您需要指定您正在收听的 特征。现在您正在收听 所有 特征。 当 select 下拉列表中的一个项目时,一些私有特征在后台被更改,这会触发回调。
为避免这种情况,请使用 names
kwarg 指定要收听的特征(可以是特征名称或特征名称列表)
select_variable.observe(get_and_plot, names='value')