Спасибо за очень ясный пример кода.
1) Вы можете указать value = None
для своих RadioButtons
2) При установке on_click
для вашей кнопки просто дайте имя функции , на самом деле не вызывайте функцию. Вы передаете функцию как объект кнопке, которая будет вызываться при нажатии (мне потребовалось некоторое время, чтобы обдумать это).
Кнопка передаст себя функции evaluate
, но виджет, который нас действительно волнует, это selector
.
import ipywidgets as widgets
selector = widgets.RadioButtons(
options=['The color', 'The length', 'The slope'],
value=None,
description='',
disabled=False
)
button = widgets.Button(
description='Submit answer',
disabled=False,
button_style='', # 'success', 'info', 'warning', 'danger' or ''
)
def evaluate(button):
selection = selector.get_interact_value()
if (selection == "The slope"):
print("Correct!")
else:
print("Try again...")
# To reset the option value. However, I would like to avoid having a "default" value
selector.value = None
button.on_click(evaluate)
left_box = widgets.VBox([selector, button])
widgets.HBox([left_box])