The main challenge in the example below is to find a good value for the DISPLAY environment variable.
#!/bin/env python
from sardana.macroserver.macro import *
from sardana.macroserver.macro import macro, Type
import os
from pyqtgraph.Qt import QtGui, QtCore
import numpy as np
import pyqtgraph as pg
#import pyqtgraph.functions as fn
win = None
app = None
class pg_minimal( Macro):
"""
this macro simulates a scan.
"""
param_def = [["command", Type.String, None, "plot, close"],]
result_def = []
def plot( self):
global win
global app
xMin = 0
xMax = 50
xDelta = 0.5
x = np.arange( xMin, xMax, xDelta)
t = np.tan(2*np.pi*x)
app = QtGui.QApplication([])
mw = QtGui.QMainWindow()
win = pg.GraphicsWindow( title="Scan the Tango Function")
win.clear()
win.addLabel( "A figure containing tan()", row = 1, col = 1)
tan = win.addPlot( row=2, col=1)
tan.showGrid( x = True, y = True)
tan.setTitle( title = "The tan() Function")
tan.setLabel( 'left', 'tan')
tan.setLabel( 'bottom', 'phase')
tan.enableAutoRange( x = False, y = True)
tan.setXRange( xMin - 0.25, xMax + 0.25)
for i in range( len(x)):
tan.clear()
tan.plot( x[0:i], t[0:i], pen=( 0, 0, 255))
app.processEvents()
#app.closeAllWindows()
#app.exit()
#app = None
#win = None
def run( self, command):
os.environ[ 'DISPLAY'] = ':1'
if command == "plot":
self.plot()
elif command == "close":
app.closeAllWindows()
app.exit()