在小部件后面的Jupyter笔记本中显示图像

时间:2019-08-02 19:03:25

标签: javascript python jupyter-notebook

我正在为Jupyter Notebook开发自定义窗口小部件。用户打开笔记本时,该窗口小部件不会自动加载,这主要是由于在内核中找不到窗口小部件状态。现在的功能是显示图像,直到笔记本加载。

我确定一个单元格包含以下内容:

from IPython.display import Image
img = Image(filename="eggsnspam.png", width=500)
display(img)

当用户加载笔记本时,将正确地重新加载其图像。

该窗口小部件中包含代码,以生成该窗口小部件的PNG“快照”图像。我要显示此图像,以便:

  1. 当用户加载笔记本并且窗口小部件状态不可用时,用户会看到序列化的图像。
  2. 当用户运行生成窗口小部件的单元格时,用户看到的是窗口小部件,而不是图像。

我尝试研究动态显示或隐藏图像的几种方法,但是没有任何效果。我相信最有前途的未尝试方法是将Image和小部件显示在输出单元格中的同一位置,以Z顺序将小部件呈现在Image的前面。但是,我不知道如何对这两者进行布局。

有必要在小部件JS和/或Python代码中进行管理,而不是通过笔记本中的代码单元进行管理。此外,该小部件没有background属性,并且我还没有学习如何创建它。 (在我参与该项目之前的讨论很喜欢将背景设置为所需图像的想法。)

1 个答案:

答案 0 :(得分:0)

jp_doodle画布小部件具有“快照”功能 它存储画布的图像。我想你可以 用它来做您正在描述的事情。

请参阅:

https://nbviewer.jupyter.org/github/AaronWatters/jp_doodle/blob/master/notebooks/Feature%20demonstrations/Snapshot.ipynb

来自jp_doodle小部件实现

https://github.com/AaronWatters/jp_doodle

有许多在画布上显示图像的示例。