【发布时间】:2021-03-29 16:13:14
【问题描述】:
我正在尝试使用Jupyter Widgets,看看是否可以制作更好的this 版本,但显然即使更改不是来自用户,观察处理程序也会触发,因此它会创建一个小部件的无限循环改变另一个。最小的例子:
import ipywidgets as widgets
a = widgets.FloatText(description='a:')
b = widgets.FloatText(description='b:')
def on_a_change(change):
b.value = change['new'] + 1
a.observe(on_a_change, names='value')
def on_b_change(change):
a.value = change['new'] + 1
b.observe(on_b_change, names='value')
display(a)
display(b)
有没有办法只触发用户发起的更改?换句话说,用户更新了一个文本框,然后其他文本框也随之更新,但这些更新不会触发更多更新。
【问题讨论】:
-
也许像ipywidgets.readthedocs.io/en/latest/examples/… 这样的东西可以调整来限制更新的数量,这样它们就可以互相更新一次然后停止?
标签: python jupyter infinite-loop onchange ipywidgets