【发布时间】:2014-01-31 00:44:35
【问题描述】:
所以,这几天我一直在玩 IPython 笔记本,我喜欢它!但是,现在我需要做一些有点花哨的事情:
我有一个降价单元格;在其中,有一个 HTML 输入和按钮,以及一些附加到按钮的 JavaScript,它将获取输入的内容,并将其注入 python 内核。这是单元格:
<h3>Use JS to pass DOM info to Python kernel: </h3>
<input id='testinput' value='FragmentId'></input>
<button id='testComms' onclick='JS2PY()'>:D</button>
<script type="text/javascript">
function JS2PY(){
var input = document.getElementById('testinput').value,
kernel = IPython.notebook.kernel;
kernel.execute('testVar = "' + input + '"');
}
</script>
像魅力一样工作!接下来我有一个 python 代码单元;它做了一些 ROOT 的东西,并根据从上述单元注入到 python 内核的任何值绘制一个图。这是python单元:
def testfunc():
from ROOT import TH1, TFile, TTree
import rootnotes, numpy
c2 = rootnotes.canvas("treeData", (600,400))
testfile = TFile("fragment27422_000.root")
testtree = testfile.Get("FragmentTree")
buff = numpy.zeros(1, dtype=float)
testtree.Branch(testVar, buff)
testtree.Draw(testVar)
return c2
testfunc()
如果我手动运行单元格也没有问题 - 太棒了!但我真正想要的是,当我在提升testVar 变量之后单击上面markdown 单元格中的那个按钮时,这个python 单元格会自动运行。提前道歉和感谢 - 这只是我使用 Python 的第二天,所以它可能非常简单。
【问题讨论】:
标签: ipython-notebook