Удалить виджет ipython из коробки (ранее виджет контейнера)
Я пытаюсь удалить дочерний виджет из группы виджетов HBox ipython в блокноте ipython. Создание группы виджетов выглядит так:
buttons = [widgets.Button(description=str(i)) for i in range(5)]
mybox = widgets.HBox(children=buttons)
mybox
Это отображает 5 кнопок.
Теперь у меня есть группа из пяти кнопок, и я хотел бы удалить последнюю кнопку. Насколько я могу судить, у объекта box нет метода удаления потомков. Поэтому я подумал закрыть последний виджет в группе:
mybox.children[-1].close()
Теперь отображаются только первые 4 кнопки (0, 1, 2, 3), чего я и хочу, однако, если я получу описание из группы, 5-я кнопка все еще там:
[child.description for child in mybox.children]
['0', '1', '2', '3', '4']
Результат, который я ожидал, и что мне нужно, это:
['0', '1', '2', '3']
Я могу просто создать копию среза, однако это вызывает другие проблемы, и я действительно хотел бы иметь возможность изменить исходную коробку.
Это не то, что мне нужно:
mybox = widgets.HBox(children=mybox.children[:-1])
1 ответ
Лучший ответ, который я смог выяснить после работы над этим:
remove = mybox.children[-1]
mybox.children = mybox.children[:-1]
remove.close()
Это не идеально, но работает. Надеюсь, это поможет кому-то еще с подобной проблемой.