取消选中一个选中的其他复选框

Uncheck other checkbox on one checked

这段代码是我写的(实际上是用Jupyter-Notebook):

import random
from ipywidgets import widgets


for ind in range(0,10):
    print('Some text'+str(ind))
    cb_inner = []
    a = random.randint(0,3)
    for el in range(0,3):
        cb_value = True if el == a else False
        A = widgets.Checkbox(value=cb_value, description='cb'+str(el))
        cb_inner.append(A)
    for_box_list = cb_inner
    box = widgets.HBox(for_box_list)
    display(box)
    print('---'*41)

现在我有了每个文本字符串和一行复选框。一次只有一个复选框处于活动状态。如果我选中另一个复选框,它们都会被选中。我想做什么:如果我选中另一个复选框,第一个自动禁用(对于每条短信的复选框组)。

我想我需要为此创建事件。我找到了这个:

但我不明白如何为我所有的盒子实现它?

我想了很多关于复选框列表并在循环中为它们创建事件,但最终找到了简单的方法: 使用单选按钮。为了处理一行中所有复选框都被关闭的情况,我只是在 RadioButton 参数中添加了一个选项:

from ipywidgets import widgets
buttons_list = []
for ind in range(0,10):
    print('My message',ind)
    rb = widgets.RadioButtons(options=['cb1', 'cb2', 'noone checked'],
                          value='cb1')
    display(rb)
print('---'*41)
buttons_list.append(rb)