События флажка Python ipywidgets

Я использую ipywidgets.widgets.Checkbox. Есть ли способ обработать события флажка? Пожалуйста, помогите. Я начинающий.

Редактировать: Как создать список флажков?

1 ответ

Решение

Прямых событий нет, но вы можете использовать observe событие Это, вероятно, создаст больше событий, чем вы хотите, поэтому вы можете захотеть отфильтровать их до одного.

from IPython.display import display
from ipywidgets import Checkbox

box = Checkbox(False, description='checker')
display(box)

def changed(b):
    print(b)

box.observe(changed)

Для создания "списка" виджетов вы можете использовать контейнерные виджеты. По ссылке:

from ipywidgets import Button, HBox, VBox

words = ['correct', 'horse', 'battery', 'staple']
items = [Button(description=w) for w in words]
left_box = VBox([items[0], items[1]])
right_box = VBox([items[2], items[3]])
HBox([left_box, right_box])

Опираясь на ответ Жака: Если вы используете Jupyter Lab, а не стандартную записную книжку Jupyter, вы также должны создать выходной виджет и сказать функции обратного вызова, чтобы писать в него с помощью декоратора. Итак, данный пример становится:

import ipywidgets as widgets

box = widgets.Checkbox(False, description='checker')
out = widgets.Output()

@out.capture()
def changed(b):
    print(b)

box.observe(changed)

display(box)
display(out)

Эти шаги описаны здесь, но очевидно, что они необходимы при использовании Jupyter Lab.

Другие вопросы по тегам