是否可以 link IPython 小部件不那么天真?

Is it possible to link IPython widgets less naively?

我将从一个简单的示例开始:

比如说,我有两个 IntSlider 小部件。我想让一个代表 x,另一个代表 x^2(单向 link)。如果我要玩第二个滑块(双向 link),也许我什至希望第一个滑块显示 sqrt(x^2)。

这会非常天真地翻译成这样:

l1 = traitlets.link((widg1, 'value'),(widg2, 5* 'value'))

当然不是,因为第二个元组参数应该是一个字符串,所以我确实传递了 'valuevaluevaluevaluevalue'。

无论如何,这可能吗?如果可以,是否已经实施?

link 只传递相同的值。如果要转换值,需要回调:

def widg1_changed(name, new_value):
    widg2.value = 5 * new_value

widg1.on_trait_change(widg1_changed, 'value')

目前不知道有什么双向的好办法