我使用ipywidgets的复选框以交互方式选择要打印的数据
似乎没有现成的“切换所有”功能
因此,我实现了自己的“全部切换”,如下所示:
import ipywidgets as widgets
def toggle_all(change):
for cb in checkboxes[1:]:
cb.value = checkboxes[0].value
def interactive_plot(change):
selection = {}
for cb in checkboxes[1:]:
selection[cb.description] = cb.value
#call some plot_function(data = data, selection = selection)
checkboxes = [widgets.Checkbox(value=False, description = "All"), widgets.Checkbox(value=False, description = "Box 1"), widgets.Checkbox(value=False, description = "Box 2")]
box = widgets.VBox(children = checkboxes)
checkboxes[0].observe(toggle_all)
for cb in checkboxes[1:]:
cb.observe(interactive_plot)
display(box)
然而,当复选框一个接一个地勾选时,这会导致闪烁,当复选框的数量较少时,这几乎不明显,但当列表增加时,这会变得缓慢而烦人
有更好的方法吗
目前没有。这是一个不幸的消息,但最大的好处是你找到了最好的方法:)
或者,您可以尝试使用
selectMultiple
小部件(https://ipywidgets.readthedocs.io/en/stable/examples/Widget%20List.html#SelectMultiple),尽管这不会给您提供复选框ipywidgets上还有一个老问题,讨论添加可以解决问题的小部件:https://github.com/jupyter-widgets/ipywidgets/issues/893。但看起来它需要一个冠军来真正实现它
相关问题 更多 >
编程相关推荐