[IPython-dev] Text output from matplotlib event not shown
Antonino Ingargiola
tritemio at gmail.com
Fri Apr 18 01:57:56 EDT 2014
Hi,
in IPython Notebook 1.x I built some QT matplotlib plots that allow to
select a range (with the mouse) and print to the range boundaries, or
related information.
To do that I connect a callback to the standard matplotlib events. The
callback draws a range highlight and prints the range info.
In IPython 2.0 I can't get the print output anymore, although the range is
drawn and therefore I'm sure the callback is called. I thought that the
issue can be related to:
https://github.com/ipython/ipython/issues/5408
If this is the same issue, are they any workaround I can use to get the
output back?
For completeness I attach the main class I use for the interactive range
selection:
class GuiSelection(object):
"""Abstract class for range selection.
Methods on_press_draw(), on_motion_draw() and on_release_print() must
be overloaded by children classes.
"""
def __init__(self, fig, ax, debug=False):
self.ax = ax
self.fig = fig
self.pressed = False
self.debug = debug
self.id_press = fig.canvas.mpl_connect('button_press_event',
self.on_press)
if self.debug:
print 'Figure:', fig, '\nAxis:', ax
def on_press(self, event):
if event.inaxes != self.ax: return
self.pressed = True
self.xs, self.ys = event.xdata, event.ydata
if self.debug:
pprint('PRESS button=%d, x=%d, y=%d, xdata=%f, ydata=%f\n' % (
event.button, event.x, event.y, event.xdata, event.ydata))
self.on_press_draw()
self.fig.canvas.draw()
self.id_motion = self.fig.canvas.mpl_connect('motion_notify_event',
self.on_motion)
self.fig.canvas.mpl_connect('button_release_event',
self.on_release)
def on_motion(self, event):
if event.inaxes != self.ax: return
if self.debug:
pprint('MOTION x=%d, y=%d, xdata=%f, ydata=%f\n' % (
event.x, event.y, event.xdata, event.ydata))
self.xe, self.ye = event.xdata, event.ydata
self.on_motion_draw()
self.fig.canvas.draw()
def on_release(self, event):
if not self.pressed: return
self.pressed = False
if self.debug:
pprint('RELEASE button=%d, x=%d, y=%d, xdata=%f, ydata=%f\n' % (
event.button, event.x, event.y, event.xdata, event.ydata))
self.fig.canvas.mpl_disconnect(self.id_motion)
self.on_release_print()
def on_press_draw(self):
pass
def on_motion_draw(self):
pass
def on_release_print(self):
pass
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/ipython-dev/attachments/20140417/473ce656/attachment.html>
More information about the IPython-dev
mailing list