Python 是否使用IPyWidget切换所有复选框?

Python 是否使用IPyWidget切换所有复选框?,python,ipywidgets,Python,Ipywidgets,我使用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

我使用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
widget(),尽管它不会给出复选框

IPyWidget上还有一个老问题,讨论添加可以解决问题的小部件:。但看起来它需要一个冠军来真正实现它