##// END OF EJS Templates
Merge pull request #1399 from asmeurer/sympyprinting...
Merge pull request #1399 from asmeurer/sympyprinting Use LaTeX to display, on output, various built-in types with the SymPy printing extension. SymPy's latex() function supports printing lists, tuples, and dicts using latex notation (it uses bmatrix, pmatrix, and Bmatrix, respectively). This provides a more unified experience with SymPy functions that return these types (such as solve()). Also display ints, longs, and floats using LaTeX, to get a more unified printing experience (so that, e.g., x/x will print the same as just 1). The string form can always be obtained by manually calling the actual print function, or 2d unicode printing using pprint(). SymPy's latex() function doesn't treat set() or frosenset() correctly presently (see http://code.google.com/p/sympy/issues /detail?id=3062), so for the present, we leave those alone.

File last commit:

r4489:8af09932
r6482:ba882bf7 merge
Show More
ipkernel_qtapp.py
75 lines | 2.8 KiB | text/x-python | PythonLexer
#!/usr/bin/env python
"""Example integrating an IPython kernel into a GUI App.
This trivial GUI application internally starts an IPython kernel, to which Qt
consoles can be connected either by the user at the command line or started
from the GUI itself, via a button. The GUI can also manipulate one variable in
the kernel's namespace, and print the namespace to the console.
Play with it by running the script and then opening one or more consoles, and
pushing the 'Counter++' and 'Namespace' buttons.
Upon exit, it should automatically close all consoles opened from the GUI.
Consoles attached separately from a terminal will not be terminated, though
they will notice that their kernel died.
"""
#-----------------------------------------------------------------------------
# Imports
#-----------------------------------------------------------------------------
from PyQt4 import Qt
from internal_ipkernel import InternalIPKernel
#-----------------------------------------------------------------------------
# Functions and classes
#-----------------------------------------------------------------------------
class SimpleWindow(Qt.QWidget, InternalIPKernel):
def __init__(self, app):
Qt.QWidget.__init__(self)
self.app = app
self.add_widgets()
self.init_ipkernel('qt')
def add_widgets(self):
self.setGeometry(300, 300, 400, 70)
self.setWindowTitle('IPython in your app')
# Add simple buttons:
console = Qt.QPushButton('Qt Console', self)
console.setGeometry(10, 10, 100, 35)
self.connect(console, Qt.SIGNAL('clicked()'), self.new_qt_console)
namespace = Qt.QPushButton('Namespace', self)
namespace.setGeometry(120, 10, 100, 35)
self.connect(namespace, Qt.SIGNAL('clicked()'), self.print_namespace)
count = Qt.QPushButton('Count++', self)
count.setGeometry(230, 10, 80, 35)
self.connect(count, Qt.SIGNAL('clicked()'), self.count)
# Quit and cleanup
quit = Qt.QPushButton('Quit', self)
quit.setGeometry(320, 10, 60, 35)
self.connect(quit, Qt.SIGNAL('clicked()'), Qt.qApp, Qt.SLOT('quit()'))
self.app.connect(self.app, Qt.SIGNAL("lastWindowClosed()"),
self.app, Qt.SLOT("quit()"))
self.app.aboutToQuit.connect(self.cleanup_consoles)
#-----------------------------------------------------------------------------
# Main script
#-----------------------------------------------------------------------------
if __name__ == "__main__":
app = Qt.QApplication([])
# Create our window
win = SimpleWindow(app)
win.show()
# Very important, IPython-specific step: this gets GUI event loop
# integration going, and it replaces calling app.exec_()
win.ipkernel.start()