如何交互式地更新IPywidgets容器(VBox、HBox)?

4

当我尝试更新包含其他动态创建容器的容器时,它不会改变。我尝试了不同的选项,但在当前选项中,我在更新函数之前定义了包含容器的变量,并在发生更改时调用此函数:

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是我的早期版本,显示基本功能按预期工作。 github.com/PMK89/IpySci/
1个回答

0

您可以通过其children属性更改HBox/VBox的内容,例如:

gui.children = [left_box, viz_vbox]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接