[IPython-User] question about frontend-kernel interaction
Zoltán Vörös
zvoros@gmail....
Mon Jul 9 16:44:28 CDT 2012
Hi Matthias,
On 07/09/2012 10:46 PM, Matthias BUSSONNIER wrote:
> Kernel.execute take a second argument that is a dict of callback (see IPython/frontend/html/notebook/static/js/codecell.js L161)
> If you don't specify how or by what the respond should be handled, the frontend will ignore the messages.
>
> Do you can either bound it directly to the current cell output handler, or, deal with it in a custom widget.
Something like the example 'directview'? I could try, though it seems a
lot of trouble...:(
What is not clear to me at the moment is how I gain access to 'this'
from within the notebook. What you suggest above is that I should have
something like this for the kernel call
kernel.execute("pyfunc();", {'output':
$.proxy(this.output_area.handle_output, this.output_area)});
but I don't know how to get 'this'. I think, tying the output to the
output handler would be fine with me.
By the way, the problem is not related to figures. This example does not
display anything, while the code is actually executed. This I know from
printing out the value of 'a'.
from IPython.core.display import display, HTML, clear_output
html = """<script type="text/javascript">
function jsfunction () {
IPython.notebook.kernel.execute("a+=1; pyfunc();");
}
</script>
<input type="button" value="Click" onclick="jsfunction()" />
"""
a = 1
display(HTML(html))
def pyfunc():
print 'hi!'
> and it seems to me that subsequent plots are never loaded to the
> notebook.
> This is strange, I don't think it's an expected behavior. Do you have any output in the JS console ?
> The fact that kernel.execute didn't get any callback might screw up something somewhere.
I don't think anything is screwed up, something is just simply missing.
And since there are no errors, the JS console is also empty.
Cheers,
Zoltán
More information about the IPython-User
mailing list