From: Brendan A. <bre...@gm...> - 2007-12-09 14:55:52
|
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 |