hi there,
i'm writing a linear step by step scripts and i'd like to use
matplotlibs interactive features as a step to load up some data, the
user to identify a point, the plot window closed and the point to be
returned to my script for further processing.
i assumed that waiting for pylab.show() to return would halt my script
until the figure was dismissed however this only works on the first
run of my script i.e.
In [1]: run z:/archive/scripts/TCD_import_probe_data
8.13378191174e-007 0.00635162601626
In [2]: run z:/archive/scripts/TCD_import_probe_data
None None
In the second invocation the figure was displayed but the script
carried on running before the figure was dismissed.
Running %reset between invocations has no effect.
Here is the crux of the script,
class SetOrigin(object):
"""
callback functor for origin placement
"""
def __init__(self, x=None, y=None):
self.x = x
self.y = y
if x and y:
self.set = True
else:
self.set = False
def __call__(self, event):
if event.inaxes:
self.x = event.xdata
self.y = event.ydata
self.set = True
pylab.plot(time, voltage)
pylab.title('Click cursor on origin ...')
cursor = Cursor(pylab.gca(), useblit=True, color='#ff0000', linewidth=1)
origin = SetOrigin()
pylab.connect('button_press_event', origin)
foo = pylab.show()
print origin.x, origin.y
pylab.show()
What am i doing wrong?
This happens in plain iPython shell and pysh (scipy shell has
difficulty loading the script 'Original traceback cannot be
reconstructed...')
brendan