Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何通过IPython小部件以交互方式更新jupyter笔记本中的标记单元格?_Python 3.x_Jupyter Notebook_Interactive_Ipywidgets_Python Markdown - Fatal编程技术网

Python 3.x 如何通过IPython小部件以交互方式更新jupyter笔记本中的标记单元格?

Python 3.x 如何通过IPython小部件以交互方式更新jupyter笔记本中的标记单元格?,python-3.x,jupyter-notebook,interactive,ipywidgets,python-markdown,Python 3.x,Jupyter Notebook,Interactive,Ipywidgets,Python Markdown,我正在使用带有Python3内核的Jupyter笔记本。我有一个基于IPython小部件的用户输入的计算。 计算结果需要显示在标记单元格中。为此,我使用Python标记nbextension。现在的问题是:如何更新用户交互的降价单元格 我尝试使用Javascript调用从python运行markdown单元格。 作为一个最简单的例子,以下两个单元格可以使用。(第一个普通python单元格,第二个标记单元格) 从IPython.display导入Javascript 导入IPyWidget def

我正在使用带有Python3内核的Jupyter笔记本。我有一个基于IPython小部件的用户输入的计算。 计算结果需要显示在标记单元格中。为此,我使用Python标记nbextension。现在的问题是:如何更新用户交互的降价单元格

我尝试使用Javascript调用从python运行markdown单元格。 作为一个最简单的例子,以下两个单元格可以使用。(第一个普通python单元格,第二个标记单元格)

从IPython.display导入Javascript
导入IPyWidget
def update_md_单元格(滑块值):
Javascript(“Jupyter.notebook.execute_cells([1])”)
t_slider=ipywidgets.IntSlider(最小值=0,最大值=10,值=10)
交互式(更新\u md\u单元格,滑块\u值=t\u滑块)
但这似乎只在功能之外起作用

Javascript(“Jupyter.notebook.execute_cells([1])”)
重新加载降价单元格

def update_md_cell():
Javascript(“Jupyter.notebook.execute_cells([1])”)
更新\u md\u单元格()
什么也不做

是否有其他方法将输入(通过IPython小部件)连接到输出(在标记单元格中)


更新:正如在对Suraj Potnuru回答的评论中提到的,我的基本问题是从以下方面得到的答案:

一个大问题是:某些地方需要返回Javascript作为其输出,否则它不会在笔记本中执行

但更糟糕的是,via ipywidgets.interactive()bind函数中的返回不足以修复gotcha,例如:

def update_md_cell():
返回Javascript(“Jupyter.notebook.execute_cells([1])”)
更新\u md\u单元格()
工作

从IPython.core.display导入Javascript
从IPython.display导入显示
导入IPyWidget
def update_md_单元格(滑块值):
返回Javascript(“Jupyter.notebook.execute_cells([1])”)
t_slider=ipywidgets.IntSlider(最小值=0,最大值=10,值=10)
交互式(更新\u md\u单元格,滑块\u值=t\u滑块)
不起作用

如何让第二个函数工作?

将foo()函数更新为以下代码

def foo():
    slider_value = t_slider.value 
    display(Javascript("var markdown_cell = IPython.notebook.get_cell(1);markdown_cell.set_text('The value of the number is "+ str(slider_value) +"');IPython.notebook.execute_cell(1)"))
上面的代码片段获取滑块对象的值,并使用
get\u cell()
函数获取第一个单元格,即标记单元格。单元格编号从0开始,因此第0个单元格是python代码单元格,第1个单元格是标记单元格

它使用
set_text()
函数使用最新的滑块值更新单元格内的标记


无论何时更新滑块,都要调用
foo()
函数来更新标记。

谢谢,您的想法是避免Python标记的好主意。但这不是我正在搜索的内容,也不起作用(单元格选择似乎有问题,它正确地更新了标记单元格,但也产生了一个无休止的重新评估python单元格的循环。很抱歉,没有发布代码,字符限制)。我不想放弃Python降价。Python标记的最大优点是,只有变量需要成为程序单元的一部分。周围的大内容(我试着用…)可以是直接的,只是格式化的文本(在一个降价单元格内)。我认为我的基本问题是这里已经讨论过的内容:但他的解决方案对我不起作用。稍后我会更新我的问题帖子。
def foo():
    slider_value = t_slider.value 
    display(Javascript("var markdown_cell = IPython.notebook.get_cell(1);markdown_cell.set_text('The value of the number is "+ str(slider_value) +"');IPython.notebook.execute_cell(1)"))