Удалить виджет 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()

Это не идеально, но работает. Надеюсь, это поможет кому-то еще с подобной проблемой.

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