2

我正在尝试制作一个交互式功能,我可以使用 2 个小部件来控制相同变量的输入。我尝试这样做是因为我希望可以选择滑动值(以便快速查看)并选择一个特定的值(键入一个值)。我尝试将小部件与ipywidget.jslink. 我猜想一旦链接的小部件可以输入其中任何一个中的值以传递给变量。然而,情况并非如此:下面,只有我在 Slider 中设置的值会更新函数(换句话说,在小部件中输入值不会更新输出)。为什么不起作用jslink?在此链接中,我发现替换ipw.jslink效果traitlets.link很好。

import ipywidgets as ipw    
from IPython.display import display
def f(x):
    return x**2
a=ipw.IntSlider(min=-10,max=20,step=1,value=10)
b=ipw.IntText(min=-10,max=20,step=1,value=10)
ipw.jslink((a,'value'),(b,'value'))
wid=ipw.interactive(f, x=a)
display(wid,b)
4

1 回答 1

0

如果问题是 Python 对象未在后端更新,可能是因为您使用的是jslink而不是link [ref]。否则,我认为这是以前版本的老问题。我使用捕获的输出重新创建,滑块和文本都调用该函数f(x)

from IPython.display import display

output = ipw.Output()

@output.capture()
def f(x):
    print(x**2)
    return x**2

a=ipw.IntSlider(min=-10,max=20,step=1,value=10)
b=ipw.IntText(min=-10,max=20,step=1,value=10)

ipw.jslink((a,'value'),(b,'value'))

wid=ipw.interactive(f, x=a)
display(wid,b)
display(output)
于 2019-06-05T18:18:05.200 回答