Show More
@@ -0,0 +1,57 b'' | |||||
|
1 | """Test the new %gui command. Run this in ipython as | |||
|
2 | ||||
|
3 | %run switchgui [backend] | |||
|
4 | ||||
|
5 | where the optional backend can be one of: qt4, gtk, tk, wx. | |||
|
6 | """ | |||
|
7 | ||||
|
8 | import sys | |||
|
9 | import time | |||
|
10 | ||||
|
11 | import IPython.core.ipapi as ipapi | |||
|
12 | ip = ipapi.get() | |||
|
13 | ||||
|
14 | from IPython.lib import inputhook | |||
|
15 | ||||
|
16 | try: | |||
|
17 | backend = sys.argv[1] | |||
|
18 | #a = ip.magic('gui -a %s' % backend) | |||
|
19 | #a = ip.magic('gui %s' % backend) | |||
|
20 | except IndexError: | |||
|
21 | backend = 'qt' | |||
|
22 | ||||
|
23 | backends = dict(wx='wxagg', qt='qt4agg', gtk='gtkagg', tk='tkagg') | |||
|
24 | ||||
|
25 | import matplotlib | |||
|
26 | matplotlib.use(backends[backend]) | |||
|
27 | #matplotlib.interactive(True) | |||
|
28 | ||||
|
29 | import matplotlib | |||
|
30 | from matplotlib import pyplot as plt, mlab, pylab | |||
|
31 | import numpy as np | |||
|
32 | ||||
|
33 | from numpy import * | |||
|
34 | from matplotlib.pyplot import * | |||
|
35 | ||||
|
36 | x = np.linspace(0,pi,100) | |||
|
37 | ||||
|
38 | print "A plot has been created" | |||
|
39 | line, = plot(x,sin(2*x)) | |||
|
40 | plt.show() | |||
|
41 | inputhook.spin_qt4() | |||
|
42 | ||||
|
43 | #raw_input("Press Enter to continue") | |||
|
44 | ||||
|
45 | print "I will now count until 10, please hit Ctrl-C before I'm done..." | |||
|
46 | print "IPython should stop counting and return to the prompt without crashing." | |||
|
47 | ||||
|
48 | line_x = line.get_data()[0] | |||
|
49 | for i in range(1,51): | |||
|
50 | print i, | |||
|
51 | sys.stdout.flush() | |||
|
52 | line.set_data(line_x,sin(x*i)) | |||
|
53 | plt.title('i=%d' % i) | |||
|
54 | #plt.show() | |||
|
55 | plt.draw() | |||
|
56 | inputhook.spin_qt4() | |||
|
57 | #time.sleep(0.04) |
@@ -22,6 +22,18 b' import sys' | |||||
22 | # Code |
|
22 | # Code | |
23 | #----------------------------------------------------------------------------- |
|
23 | #----------------------------------------------------------------------------- | |
24 |
|
24 | |||
|
25 | def appstart_qt4(): | |||
|
26 | from PyQt4 import QtCore, QtGui | |||
|
27 | ||||
|
28 | app = QtCore.QCoreApplication.instance() | |||
|
29 | print 'qtapp:', app | |||
|
30 | if app is not None: | |||
|
31 | if current_gui() == 'qt4': | |||
|
32 | pass | |||
|
33 | else: | |||
|
34 | app.exec_() | |||
|
35 | ||||
|
36 | ||||
25 | class _DummyMainloop(object): |
|
37 | class _DummyMainloop(object): | |
26 | """A special manager to hijack GUI mainloops that is mostly a no-op. |
|
38 | """A special manager to hijack GUI mainloops that is mostly a no-op. | |
27 |
|
39 | |||
@@ -34,6 +46,12 b' class _DummyMainloop(object):' | |||||
34 |
|
46 | |||
35 |
|
47 | |||
36 | def __call__(self, *args, **kw): |
|
48 | def __call__(self, *args, **kw): | |
|
49 | force = kw.pop('force', False) | |||
|
50 | force = False | |||
|
51 | if force: | |||
|
52 | #print 'forced spin' # dbg | |||
|
53 | self.ml(*args, **kw) | |||
|
54 | ||||
37 | if self.ihm.current_gui() == self.gui_type: |
|
55 | if self.ihm.current_gui() == self.gui_type: | |
38 | pass |
|
56 | pass | |
39 | else: |
|
57 | else: | |
@@ -45,14 +63,15 b' def spin_qt4():' | |||||
45 |
|
63 | |||
46 | app = QtCore.QCoreApplication.instance() |
|
64 | app = QtCore.QCoreApplication.instance() | |
47 | if (app is not None) and (app.thread() == QtCore.QThread.currentThread()): |
|
65 | if (app is not None) and (app.thread() == QtCore.QThread.currentThread()): | |
48 | timer = QtCore.QTimer() |
|
66 | ## timer = QtCore.QTimer() | |
49 | QtCore.QObject.connect(timer, |
|
67 | ## QtCore.QObject.connect(timer, | |
50 | QtCore.SIGNAL('timeout()'), |
|
68 | ## QtCore.SIGNAL('timeout()'), | |
51 | app, |
|
69 | ## app, | |
52 | QtCore.SLOT('quit()')) |
|
70 | ## QtCore.SLOT('quit()')) | |
53 | timer.start(100) |
|
71 | ## timer.start(100) | |
54 | QtCore.QCoreApplication.exec_() |
|
72 | #QtCore.QCoreApplication.exec_(force=True) | |
55 | timer.stop() |
|
73 | QtCore.QCoreApplication.processEvents(QtCore.QEventLoop.AllEvents) | |
|
74 | ##timer.stop() | |||
56 |
|
75 | |||
57 |
|
76 | |||
58 | def spin_wx(): |
|
77 | def spin_wx(): | |
@@ -241,7 +260,7 b' class InputHookManager(object):' | |||||
241 | except AttributeError: |
|
260 | except AttributeError: | |
242 | pass |
|
261 | pass | |
243 | self._current_gui = 'qt4' |
|
262 | self._current_gui = 'qt4' | |
244 | self._hijack_qt4() |
|
263 | #self._hijack_qt4() | |
245 | if app: |
|
264 | if app: | |
246 | from PyQt4 import QtGui |
|
265 | from PyQt4 import QtGui | |
247 | app = QtCore.QCoreApplication.instance() |
|
266 | app = QtCore.QCoreApplication.instance() |
General Comments 0
You need to be logged in to leave comments.
Login now