javascript - Jupyter 笔记本 : How do I execute only cells that have a particular tag

标签 javascript python widget jupyter-notebook

我正在创建一个小部件,它将仅执行笔记本中的某些单元格——以根据更改的数据生成新的绘图。而 Jupyter 可以执行诸如执行笔记本中的所有单元格,或执行当前单元格下的所有单元格等操作。

相反,我想为要有选择地执行的单元格创建标签。然后,当我按下按钮时,我可以执行此代码并运行单元格。

小部件代码本身并不重要——那部分很简单。更难的是弄清楚如何在笔记本中实现 python 和 javascript 之间的通信。有人有主意吗。

最佳答案

所以我想通了。我认为其他人一直在寻找与此类似的答案,所以我将其发布。

首先,我必须在笔记本中标记相关的单元格。您可以通过笔记本中的“ View ”和“单元格工具栏”来完成。

其次,使用这些函数创建一个代码单元。第一个函数将得到 所有具有特定标签的单元格。第二个单元将运行所有具有 那个标签。在我的例子中,标记名是“plotcell”,但这可以更改为任何内容。这个cell需要在尝试使用这个函数之前运行,所以我通常把它作为一个初始化cell。

%%javascript
window.findCellIndicesByTag = function findCellIndicesByTag(tagName) {
  return (Jupyter.notebook.get_cells()
    .filter(
      ({metadata: {tags}}) => tags && tags.includes(tagName)
    )
    .map((cell) => Jupyter.notebook.find_cell_index(cell))
  );
};

window.runPlotCells = function runPlotCells() {
    var c = window.findCellIndicesByTag('plotcell');
    Jupyter.notebook.execute_cells(c);
};

最后,要运行此代码,您需要使用以下代码:

from IPython.core.display import Javascript
from IPython.display import display

def runPlotCells():
    display(Javascript("window.runPlotCells()"))

此代码将执行先前创建的 Javascript 函数以运行 PlotCells。我使用了 display 函数,以便笔记本中的输出被抑制,结果在浏览器开发人员控制台中可见。

然后在按钮的 on_click 事件之后运行此函数。

应该就是这样。

关于javascript - Jupyter 笔记本 : How do I execute only cells that have a particular tag,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50921297/

相关文章:

java - "Save primefaces chart as"带导出功能

javascript - null 是一个有效的 javascript 属性名称吗?

javascript - HTML/CSS/JS 元素定位

python - 我如何将参数传递给 Django 中基于类的 View ?

python - 在 python 中使用 azure REST api 将 Runbook 创建为草稿时,我遇到了错误...!

python - 通过理解迭代字典并获得字典

python - 带有 tkinter xgboost 的 cxfreeze 小部件未显示但没有错误

javascript - (node/enable-util-print!) 是做什么的?

javascript - 我得到了一个包含 JS、HTML 和 CSS3 的代码片段。我如何将它插入到 wordpress html-widget 中?

qt - QDockWidget 不会显示内容