import ipywidgets as widgets
from IPython.display import display
slider = widgets.IntSlider(min=0, max=100, step=1, description='Age:', value = 0)
agelabel = widgets.Label(value = '0')
mylink = widgets.jslink((slider, 'value'), (agelabel, 'value'))
display(slider, agelabel)
在导入后的前两行中,我们创建了一个选择年龄的滑块和一个显示消息的标签。此代码按预期工作,并在我们移动它时在标签中显示滑块的值。
现在,我们不需要显示滑块中的直接值,而是要在标签Your selected age : 12
中显示,甚至要应用一些逻辑You may not order alcoholic drinks at 12
。
本质上是获得回调,但不受这些控件( value
)的映射属性(((slider, 'value'), (agelabel, 'value'))
)的限制。
发布于 2022-05-24 06:41:35
我找到了一个解决方案,尽管不是通过jslink
。许多小部件,包括IntSlider
,公开了接受回调函数的observe
。每次改变滑块时,都会调用回调函数。
# mylink = widgets.jslink((slider, 'value'), (lblSlider, 'value'))
def showmsg(caller):
lblSlider.value = f'Your age is {caller.new}'
slider.observe(showmsg, names='value')
在这种方法中,我们不需要使用jslink
链接。还请注意,names
in observe
,用于指定何时调用处理程序。请看一下文件串。
https://stackoverflow.com/questions/72357455
复制相似问题