Как интерактивно обновить контейнер IPywidgets (VBox, HBox)?
Когда я пытаюсь обновить контейнер, который содержит другой динамически созданный контейнер, он не изменяется. Я пробовал разные варианты, но в текущем я определил переменные, содержащие контейнеры, перед функцией обновления и вызываю эту функцию всякий раз, когда происходит изменение:
history_array = []
fig_array = []
history_vbox = widgets.VBox(history_array)
viz_vbox = widgets.VBox(fig_array)
left_box = widgets.HBox([])
gui = widgets.HBox([left_box, viz_vbox])
# updates the gui
def update_gui():
global gui
gui = widgets.HBox([left_box, viz_vbox])
display(gui)
позже в скрипте я изменяю контейнеры глобально, как:
left_box = widgets.VBox([input_box, eq_out0, eqchoice, history_vbox])
Я попытался отобразить контейнеры, прежде чем функция только изменила контейнер без display(), и перепробовал множество других опций, но он по-прежнему показывает только пустой список.
Я положил записную книжку на github. IpySci.ipynb показывает текущее состояние с описанной проблемой IpySci-Copy1.ipynb моя самая ранняя версия, которая показывает, что базовая функция работает так, как задумано.
1 ответ
Вы можете изменить содержимое HBox/VBox через егоchildren
имущество, например:
gui.children = [left_box, viz_vbox]