##// END OF EJS Templates
Add a core dev section to docs
Add a core dev section to docs

File last commit:

r20547:8f4e2b41
r22022:86151b82
Show More
Terminal Usage.ipynb
285 lines | 5.8 KiB | text/plain | TextLexer
Brian E. Granger
Work on IPython Kernel notebooks.
r17503 {
Min RK
upate exmaple notebooks to nbformat v4
r18669 "cells": [
Brian E. Granger
Work on IPython Kernel notebooks.
r17503 {
Min RK
upate exmaple notebooks to nbformat v4
r18669 "cell_type": "markdown",
"metadata": {},
"source": [
"# A few things that work best/only at the IPython terminal or Qt console clients"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Running code with `%run`"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [
Brian E. Granger
Work on IPython Kernel notebooks.
r17503 {
Min RK
upate exmaple notebooks to nbformat v4
r18669 "name": "stdout",
"output_type": "stream",
"text": [
"Writing script.py\n"
Brian E. Granger
Work on IPython Kernel notebooks.
r17503 ]
Min RK
upate exmaple notebooks to nbformat v4
r18669 }
],
"source": [
"%%writefile script.py\n",
"x = 10\n",
"y = 20\n",
"z = x+y\n",
Min RK
pass on IPython Kernel example notebooks...
r20547 "print('z is: %s' % z)"
Min RK
upate exmaple notebooks to nbformat v4
r18669 ]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [
Brian E. Granger
Work on IPython Kernel notebooks.
r17503 {
Min RK
upate exmaple notebooks to nbformat v4
r18669 "name": "stdout",
"output_type": "stream",
"text": [
"z is: 30\n"
Brian E. Granger
Work on IPython Kernel notebooks.
r17503 ]
Min RK
upate exmaple notebooks to nbformat v4
r18669 }
],
"source": [
"%run script"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [
Brian E. Granger
Work on IPython Kernel notebooks.
r17503 {
Min RK
upate exmaple notebooks to nbformat v4
r18669 "data": {
"text/plain": [
"10"
]
},
"execution_count": 3,
Brian E. Granger
Work on IPython Kernel notebooks.
r17503 "metadata": {},
Min RK
upate exmaple notebooks to nbformat v4
r18669 "output_type": "execute_result"
}
],
"source": [
"x"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Event loop and GUI integration"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The `%gui` magic enables the integration of GUI event loops with the interactive execution loop, allowing you to run GUI code without blocking IPython.\n",
"\n",
"Consider for example the execution of Qt-based code. Once we enable the Qt gui support:"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"%gui qt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can define a simple Qt application class (simplified version from [this Qt tutorial](http://zetcode.com/tutorials/pyqt4/firstprograms)):"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import sys\n",
"from PyQt4 import QtGui, QtCore\n",
"\n",
"class SimpleWindow(QtGui.QWidget):\n",
" def __init__(self, parent=None):\n",
" QtGui.QWidget.__init__(self, parent)\n",
"\n",
" self.setGeometry(300, 300, 200, 80)\n",
" self.setWindowTitle('Hello World')\n",
"\n",
" quit = QtGui.QPushButton('Close', self)\n",
" quit.setGeometry(10, 10, 60, 35)\n",
"\n",
" self.connect(quit, QtCore.SIGNAL('clicked()'),\n",
" self, QtCore.SLOT('close()'))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And now we can instantiate it:"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"app = QtCore.QCoreApplication.instance()\n",
"if app is None:\n",
" app = QtGui.QApplication([])\n",
"\n",
"sw = SimpleWindow()\n",
"sw.show()\n",
"\n",
"from IPython.lib.guisupport import start_event_loop_qt4\n",
"start_event_loop_qt4(app)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"But IPython still remains responsive:"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
Brian E. Granger
Work on IPython Kernel notebooks.
r17503 {
Min RK
upate exmaple notebooks to nbformat v4
r18669 "data": {
"text/plain": [
"12"
]
},
"execution_count": 7,
Brian E. Granger
Work on IPython Kernel notebooks.
r17503 "metadata": {},
Min RK
upate exmaple notebooks to nbformat v4
r18669 "output_type": "execute_result"
}
],
"source": [
"10+2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The `%gui` magic can be similarly used to control Wx, Tk, glut and pyglet applications, [as can be seen in our examples](https://github.com/ipython/ipython/tree/master/examples/lib)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Embedding IPython in a terminal application"
]
},
{
"cell_type": "code",
Min RK
pass on IPython Kernel example notebooks...
r20547 "execution_count": 8,
Min RK
upate exmaple notebooks to nbformat v4
r18669 "metadata": {
"collapsed": false
},
"outputs": [
Brian E. Granger
Work on IPython Kernel notebooks.
r17503 {
Min RK
upate exmaple notebooks to nbformat v4
r18669 "name": "stdout",
"output_type": "stream",
"text": [
"Writing simple-embed.py\n"
Brian E. Granger
Work on IPython Kernel notebooks.
r17503 ]
}
],
Min RK
upate exmaple notebooks to nbformat v4
r18669 "source": [
"%%writefile simple-embed.py\n",
"# This shows how to use the new top-level embed function. It is a simpler\n",
"# API that manages the creation of the embedded shell.\n",
"\n",
"from IPython import embed\n",
"\n",
"a = 10\n",
"b = 20\n",
"\n",
"embed(header='First time', banner1='')\n",
"\n",
"c = 30\n",
"d = 40\n",
"\n",
"embed(header='The second time')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The example in kernel-embedding shows how to embed a full kernel into an application and how to connect to this kernel from an external process."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Logging terminal sessions and transitioning to a notebook"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The `%logstart` magic lets you log a terminal session with various degrees of control, and the `%notebook` one will convert an interactive console session into a notebook with all input cells already created for you (but no output)."
]
Brian E. Granger
Work on IPython Kernel notebooks.
r17503 }
Min RK
upate exmaple notebooks to nbformat v4
r18669 ],
Min RK
add kernel metadata to example notebooks
r20278 "metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.4.2"
}
},
Min RK
upate exmaple notebooks to nbformat v4
r18669 "nbformat": 4,
"nbformat_minor": 0
Min RK
add kernel metadata to example notebooks
r20278 }