Премахване на ipython widget от кутията (преди контейнер widget)

Опитвам се да премахна дъщерна джаджа от група джаджи на HBox ipython в бележник на ipython. Създаването на група джаджи изглежда така:

    buttons = [widgets.Button(description=str(i)) for i in range(5)]
    mybox = widgets.HBox(children=buttons)
    mybox

Това показва 5 бутона.

Сега имам група от пет бутона и бих искал да премахна последния бутон. Доколкото мога да кажа, обектът кутия няма метод за премахване на деца. Така че мисълта ми беше да затворя последната джаджа в групата:

    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])

person johnchase    schedule 07.08.2015    source източник


Отговори (1)


Най-добрият отговор, който успях да разбера, след като работих върху това, е:

remove = mybox.children[-1]
mybox.children = mybox.children[:-1]
remove.close()

Това не е перфектно, но върши работа. Надяваме се, че ще помогне на някой друг с подобен проблем.

person johnchase    schedule 07.08.2015