我尝试使用 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)
但是一旦我将widgets.VBox([a,b])
db() 函数替换为display(widgets.VBox([a,b]))
一切都恢复正常。
抱歉,可能是一个基本问题,但是这种行为背后的系统是什么?
如果您在 Notebook 中工作,默认行为是将任何单元格的最后一行打印/显示到下面的输出空间。因此widgets.VBox([a,out])
,您的第一个片段的最后一行实际上display(widgets.VBox([a,out]))
是伪装的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句