##// END OF EJS Templates
DOC: Add information about in-process kernels to What's New.
DOC: Add information about in-process kernels to What's New.

File last commit:

r8472:28bcbaa6
r8473:d2ab68e4
Show More
inprocess_qtconsole.py
48 lines | 1.5 KiB | text/x-python | PythonLexer
""" A simple example of using the Qt console with an in-process kernel.
We shall see how to create the frontend widget, create an in-process kernel,
push Python objects into the kernel's namespace, and execute code in the
kernel, both directly and via the frontend widget.
"""
from IPython.inprocess.ipkernel import InProcessKernel
from IPython.frontend.qt.console.rich_ipython_widget import RichIPythonWidget
from IPython.frontend.qt.inprocess_kernelmanager import QtInProcessKernelManager
from IPython.lib import guisupport
def main():
app = guisupport.get_app_qt4()
# Create a kernel and populate the namespace.
kernel = InProcessKernel()
kernel.shell.push({'x': 0, 'y': 1, 'z': 2})
# Create a kernel manager for the frontend and register it with the kernel.
km = QtInProcessKernelManager(kernel=kernel)
km.start_channels()
kernel.frontends.append(km)
# Create the Qt console frontend.
control = RichIPythonWidget()
control.exit_requested.connect(app.quit)
control.kernel_manager = km
control.show()
# Execute some code directly. Note where the output appears.
kernel.shell.run_cell('print "x=%r, y=%r, z=%r" % (x,y,z)')
# Execute some code through the frontend (once the event loop is
# running). Again, note where the output appears.
do_later(control.execute, '%who')
guisupport.start_event_loop_qt4(app)
def do_later(func, *args, **kwds):
from IPython.external.qt import QtCore
QtCore.QTimer.singleShot(0, lambda: func(*args, **kwds))
if __name__ == '__main__':
main()