IPython小部件的值是否可以传播到其他单元格?

时间:2014-09-20 05:22:30

标签: python widget ipython ipython-notebook

是否可以将来自IPython小部件的值传播到其他单元格,而无需在下游重新加载这些单元格?

具体来说,我有一些复选框,指示是否在每个图表中绘制某些行。我有几个图表,我希望将图表放在单独的单元格中,以便我可以提供每个图表中的内容的文字说明。我想象的粗略结构如下所示,列表中的每个编号项目都是不同的单元格。

  1. Markdown - 从下面的复选框中选择要绘制的每一行。
  2. 代码 - interactive(some_plotting_fn, ckbox1=CheckboxWidget(), ckbox2=CheckboxWidget())
  3. Markdown - 第一张图表的说明。 Blah blah。
  4. 代码 - plot_first_chart_based_on_check_boxes()
  5. Markdown - 第二张图表的说明。 Blah blah blah。
  6. 代码 - plot_second_chart_based_on_check_boxes()
  7. 这可行吗?我可以在一个单元格中完成所有绘图,但随后这些绘图最终聚集在一起,我更喜欢用描述图表的文字来介绍它们。

1 个答案:

答案 0 :(得分:1)

checkbox创建为单独的对象:

from IPython.html.widgets import interactive, Checkbox
c= Checkbox()
interactive(lambda x,y: print(x,y), x=c, y=Checkbox())
----
display X and Y checkbox

这里有一些降价......

interactive(lambda x,y: print(x,z), x=c, z=Checkbox())
----
display X and Z checkbox

这里有更多降价,我不会使用互动,所以你需要重新运行单元格以查看更改:

if x is True:
   title('is is True')
plot(...)

X复选框跨单元格同步(至少在IPython master上) 用绘图功能替换打印件。您还可以通过c.value访问“x”的值。

[edit]回复人们提出的编辑:请注意,在IPython主版和未来版本中,Widget后缀已被删除。带有后缀的API是临时的,永远不会是明确的。因此,正确的用法确实是Checkbox而不是CheckboxWidget