在经历了令人沮丧的一天之后,我想出了一个完全破解的方法来解决这个问题(但至少它达到了我想要的 100%)。我正在添加一个按钮,单击该按钮会.close()
在第二个滑块以及按钮本身上调用。因此,每次我需要移动第一个滑块之前,我都会按下这个按钮来清除。
这是基于问题片段的功能齐全的代码,您可以将其复制粘贴到解释器中。
from ipywidgets import *
from IPython.display import display
datasets=[{"property":1},{"property":2},{"property":3},{"property":4},{"property":5}]
def read_dataset(dataset_id):
return datasets[dataset_id]
def fun1(dataset_id):
dataset = read_dataset(dataset_id)
sliders = interactive(fun2, data=fixed(dataset), var=(0,dataset["property"],0.1)) # note I am now using interactive, instead of interact, because I need the close() function
close_button = widgets.Button(description="Remove sliders")
def remove_sliders(b):
sliders.close()
b.close()
close_button.on_click(remove_sliders)
display(sliders)
display(close_button)
def fun2(data, var):
print
# something
interact(fun1, dataset_id=(0,5,1))