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