ipywidgets.VBox 不显示一次函数的一部分

ipywidgets.VBox not showing once part of function

我尝试使用 ipywidgets 创建交互式仪表板。 (ipywidgets 版本 7.5.0,python 版本 3.7.2)

在单批代码中,widgets.VBox()自动显示。但是一旦我将语句外包给一个函数,widgets.VBox() 就不会显示,除非我明确地将它包装在 display() 语句中。这是一段有效的简单代码。它在顶部显示滑块,在底部显示选择的次数 5。

import ipywidgets as widgets
from IPython.display import display

def fa(a,b):
    display(a*b)

a = widgets.IntSlider(10)
out = widgets.interactive_output(fa,{'a':a,'b':widgets.fixed(5)})
widgets.VBox([a,out])

将 VBox 放入输出函数后,什么也没有显示,甚至没有错误消息:

def fa(a,b):
    display(a*b)

def db(a,b):
   widgets.VBox([a,b])

a = widgets.IntSlider(10)
out = widgets.interactive_output(fa,{'a':a,'b':widgets.fixed(5)})
db(a,out)

但是一旦我将 db() 函数中的 widgets.VBox([a,b]) 替换为 display(widgets.VBox([a,b])) ,一切都会恢复正常。

抱歉,这可能是一个基本问题,但这种行为背后的系统是什么?

如果您在 Notebook 中工作,默认行为是 print/display 任何单元格的最后一行到下面的输出 space。因此,您第一个代码段最后一行的 widgets.VBox([a,out]) 实际上是伪装的 display(widgets.VBox([a,out]))