在Jupyter笔记本中,我想让三个滑块有一个常数和,其中一个滑块的值的变化通过生成随机数触发另两个滑块的变化。我目前的做法如下:
import ipywidgets as widgets
import numpy as np
from IPython.display import display
y = widgets.FloatSlider(min=0, max=100, step=1, description="Yes")
n = widgets.FloatSlider(min=0, max=100, step=1, description="No")
a = widgets.FloatSlider(min=0, max=100, step=1, description="Abstention")
output = widgets.Output()
@output.capture()
def slider_y_eventhandler(change):
output.clear_output()
n.value = np.random.randint(0, 100 - change["new"])
a.value = 100 - sum([change["new"], n.value])
with output:
if sum([n.value, change["new"]]) >= 100:
logger.debug()
print(sum((y.value, n.value, a.value)))
@output.capture()
def slider_n_eventhandler(change):
output.clear_output()
y.value = np.random.randint(0, 100 - change["new"])
a.value = 100 - sum([change["new"], n.value])
with output:
logger.debug(change["owner"])
print(sum((y.value, n.value, a.value)))
@output.capture()
def slider_a_eventhandler(change):
output.clear_output()
y.value = np.random.randint(0, 100 - change["new"])
n.value = 100 - sum([change["new"], a.value])
with output:
logger.debug(change["owner"])
print(sum((y.value, n.value, a.value)))
y.observe(slider_y_eventhandler, names="value")
n.observe(slider_n_eventhandler, names="value")
a.observe(slider_a_eventhandler, names="value")
display(y, n, a, output)
问题是,通过更改slidera
的值,内核会不断重复其他两个slider的更改,直到崩溃。有什么办法可以防止吗?或者我用错误的方式处理这个问题
目前没有回答
相关问题 更多 >
编程相关推荐