Снимите другой флажок на одном отмеченном

Я написал этот код (фактически используя 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)

Теперь у меня есть текстовые строки и строки для каждого из них. Только один флажок активен в то время. Если я установлю другой флажок, они оба будут отмечены. Что я хочу сделать: если я установлю другой флажок, первый автоматически отключится (для группы флажков для каждого текстового сообщения).

Я полагаю, мне нужно создать событие для этого. Я нашел это: Python ipywidgets флажок события

Но я не могу понять, как реализовать это для всех моих коробок?

1 ответ

Решение

Я много думал о списке флажков и создании событий для них в цикле, но в конце концов нашел простой способ: использование RadioButtons. Чтобы справиться с ситуацией, когда все флажки в строке отключены, я просто добавил еще один параметр в аргументы 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)
Другие вопросы по тегам