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]))
。
我尝试使用 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]))
。