sou*_*alo 4 python jupyter jupyter-notebook ipywidgets nbconvert
我有一个带有以下单元格的 Jupyter 笔记本:
from ipywidgets import widgets, interact
slider = widgets.IntSlider()
def print_val(v):
print(v)
interact(print_val,v=slider)
Run Code Online (Sandbox Code Playgroud)
这在笔记本中工作得很好 - 当我更改滑块时,打印输出会发生变化。但是当我使用nbconvert将笔记本转换为 HTML 时,滑块在输出 HTML 中仍然呈现良好,但对打印输出没有影响。
知道如何让它发挥作用吗?也许 ipywidgets 不是适合此类内容的库?
谢谢!
我想你想念什么nbconvert。将笔记本转换为其他格式(例如 PDF、LATEX 等)时需要此实用程序。它用于共享和演示。一旦笔记本电脑被转换,人们就失去了交互选项。
Jupyter 笔记本的交互性由 Jupyter 服务器提供,该服务器在您jupyter notebook从命令行调用时启动。
因此,当您将笔记本另存为网页或将其转换为 HTML 时,您没有处理所有更改的服务器后端部分。它是一个静态网页。因为滑块是一个标准元素,所以它可以正确呈现,但是当您滑动它时什么也不会发生:没有任何“附加”到它来处理事件。
最后,为了能够与 Jupyter Notebook 交互,您需要运行某种 Jupyter 服务器。如果您只需要自己使用,它可以是本地服务器;如果您想与其他人协作,则可以使用 Google Colab(或 Jupyter Hub)。
此外,还有几种解决方案可以让人们在图表上进行一些交互,例如Bokeh和Plotly。他们还要求您运行某种服务器。
当然,只有当您需要 Python 来处理数据时,所有这些才有意义。如果您的需求很简单,例如显示滑块值,那么您最好使用简单的 Javascript,它可以直接在浏览器中处理滑块更改,而无需在后端运行任何服务器。