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

2024-05-04 12:23:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用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)

然而,当复选框一个接一个地勾选时,这会导致闪烁,当复选框的数量较少时,这几乎不明显,但当列表增加时,这会变得缓慢而烦人

有更好的方法吗


Tags: infalseforplotvaluedefdescriptionwidgets