|
|
"""Test the new %gui command. Run this in ipython as
|
|
|
|
|
|
In [1]: %gui [backend]
|
|
|
|
|
|
In [2]: %run switchgui [backend]
|
|
|
|
|
|
where the optional backend can be one of: qt4, gtk, tk, wx.
|
|
|
|
|
|
Because of subtle difference in how Matplotlib handles the different GUI
|
|
|
toolkits (in things like draw and show), minor modifications to this script
|
|
|
have to be made for Tk to get it to work with the 0.99 and below releases
|
|
|
of Matplotlib. However, in the future, Matplotlib should be able to have
|
|
|
similar logic for all the toolkits, as they are all now using PyOS_InputHook.
|
|
|
"""
|
|
|
|
|
|
import sys
|
|
|
import time
|
|
|
|
|
|
from IPython.lib import inputhook
|
|
|
|
|
|
gui = inputhook.current_gui()
|
|
|
if gui is None:
|
|
|
gui = 'qt4'
|
|
|
inputhook.enable_qt4(app=True)
|
|
|
|
|
|
backends = dict(wx='wxagg', qt4='qt4agg', gtk='gtkagg', tk='tkagg')
|
|
|
|
|
|
import matplotlib
|
|
|
matplotlib.use(backends[gui])
|
|
|
matplotlib.interactive(True)
|
|
|
|
|
|
import matplotlib
|
|
|
from matplotlib import pyplot as plt, mlab, pylab
|
|
|
import numpy as np
|
|
|
|
|
|
from numpy import *
|
|
|
from matplotlib.pyplot import *
|
|
|
|
|
|
x = np.linspace(0,pi,500)
|
|
|
|
|
|
print "A plot has been created"
|
|
|
line, = plot(x,sin(2*x))
|
|
|
inputhook.spin() # This has to be removed for Tk
|
|
|
|
|
|
|
|
|
print "Now, we will update the plot..."
|
|
|
print
|
|
|
for i in range(1,51):
|
|
|
print i,
|
|
|
sys.stdout.flush()
|
|
|
line.set_data(x,sin(x*i))
|
|
|
plt.title('i=%d' % i)
|
|
|
plt.draw()
|
|
|
inputhook.spin() # This has to be removed for Tk
|
|
|
|