Я создал функцию, которая позволяет пользователю делать выбор из контрольного списка и возвращать выбранные значения. Проблема в том, что возвращаемый контрольный список имеет тип ipywidgets.widgets.widget_output.Output, и я не могу найти способ извлечь значения внутри результата.
import ipywidgets as widgets
def create_checklist():
data = {"label1": "data1", "label2": "data2"}
names = []
checkbox_objects = []
for key in data:
checkbox_objects.append(widgets.Checkbox(value=False, description=key))
names.append(key)
arg_dict = {names[i]: checkbox for i, checkbox in enumerate(checkbox_objects)}
ui = widgets.VBox(children=checkbox_objects)
selected_data = []
def select_data(**kwargs):
selected_data.clear()
for key in kwargs:
if kwargs[key] is True:
selected_data.append(key)
print(selected_data)
out = widgets.interactive_output(select_data, arg_dict)
display(ui)
return out
checklist = create_checklist()
print("Displays just fine: ")
display(checklist)
print("But cannot print or use in any way. Print result: ")
print(checklist)
print(f"\nChecklist type: {type(checklist)}")
После выбора результата 'label2':
Displays just fine:
['label2']
But cannot print or use in any way. Print result:
Output()
Checklist type: <class 'ipywidgets.widgets.widget_output.Output'>
При определенных условиях вы также можете распечатать его (контрольный список) и получить:
Output(outputs=({'output_type': 'stream', 'text': "['label2']\n", 'name': 'stdout'},))
Я явно пробовал список (контрольный список), checklist.text, контрольный список ['text'], но безрезультатно.