<div dir="ltr">For the record, I tried running the plot from a qtconsole and the text output is correctly printed. So it is a notebook specific issue.<br><div><br></div><div>Antonio</div></div><div class="gmail_extra"><br>

<br><div class="gmail_quote">On Thu, Apr 17, 2014 at 10:57 PM, Antonino Ingargiola <span dir="ltr"><<a href="mailto:tritemio@gmail.com" target="_blank">tritemio@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div dir="ltr">Hi,<div><br></div><div>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.</div><div><br></div>
<div>


To do that I connect a callback to the standard matplotlib events. The callback draws a range highlight and prints the range info.</div><div><br></div><div>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:</div>



<div><br></div><div><a href="https://github.com/ipython/ipython/issues/5408" target="_blank">https://github.com/ipython/ipython/issues/5408</a><br></div><div><br></div><div>If this is the same issue, are they any workaround I can use to get the output back?</div>



<div><br></div><div>For completeness I attach the main class I use for the interactive range selection:</div><div><br></div><div><div><font face="courier new, monospace">class GuiSelection(object):</font></div><div><font face="courier new, monospace">    """Abstract class for range selection.</font></div>



<div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">    Methods on_press_draw(), on_motion_draw() and on_release_print() must</font></div><div><font face="courier new, monospace">    be overloaded by children classes.</font></div>



<div><font face="courier new, monospace">    """</font></div><div><font face="courier new, monospace">    def __init__(self, fig, ax, debug=False):</font></div><div><font face="courier new, monospace">        <a href="http://self.ax" target="_blank">self.ax</a> = ax</font></div>



<div><font face="courier new, monospace">        self.fig = fig</font></div><div><font face="courier new, monospace">        self.pressed = False</font></div><div><font face="courier new, monospace">        self.debug = debug</font></div>



<div><font face="courier new, monospace">        self.id_press = fig.canvas.mpl_connect('button_press_event',</font></div><div><font face="courier new, monospace">                                                self.on_press)</font></div>



<div><font face="courier new, monospace">        if self.debug:</font></div><div><font face="courier new, monospace">            print 'Figure:', fig, '\nAxis:', ax</font></div><div><font face="courier new, monospace">    def on_press(self, event):</font></div>



<div><font face="courier new, monospace">        if event.inaxes != <a href="http://self.ax" target="_blank">self.ax</a>: return</font></div><div><font face="courier new, monospace">        self.pressed = True</font></div>


<div><font face="courier new, monospace">        self.xs, self.ys = event.xdata, event.ydata</font></div>
<div><font face="courier new, monospace">        if self.debug:</font></div><div><font face="courier new, monospace">            pprint('PRESS button=%d, x=%d, y=%d, xdata=%f, ydata=%f\n' % (</font></div><div><font face="courier new, monospace">                event.button, event.x, event.y, event.xdata, event.ydata))</font></div>



<div><font face="courier new, monospace">        self.on_press_draw()</font></div><div><font face="courier new, monospace">        self.fig.canvas.draw()</font></div><div><font face="courier new, monospace">        self.id_motion = self.fig.canvas.mpl_connect('motion_notify_event',</font></div>



<div><font face="courier new, monospace">                                                     self.on_motion)</font></div><div><font face="courier new, monospace">        self.fig.canvas.mpl_connect('button_release_event',</font></div>



<div><font face="courier new, monospace">                                             self.on_release)</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">    def on_motion(self, event):</font></div>



<div><font face="courier new, monospace">        if event.inaxes != <a href="http://self.ax" target="_blank">self.ax</a>: return</font></div><div><font face="courier new, monospace">        if self.debug:</font></div><div>


<font face="courier new, monospace">            pprint('MOTION x=%d, y=%d, xdata=%f, ydata=%f\n' % (</font></div>
<div><font face="courier new, monospace">                event.x, event.y, event.xdata, event.ydata))</font></div><div><font face="courier new, monospace">        self.xe, <a href="http://self.ye" target="_blank">self.ye</a> = event.xdata, event.ydata</font></div>



<div><font face="courier new, monospace">        self.on_motion_draw()</font></div><div><font face="courier new, monospace">        self.fig.canvas.draw()</font></div><div><font face="courier new, monospace"><br></font></div>



<div><font face="courier new, monospace">    def on_release(self, event):</font></div><div><font face="courier new, monospace">        if not self.pressed: return</font></div><div><font face="courier new, monospace">        self.pressed = False</font></div>



<div><font face="courier new, monospace">        if self.debug:</font></div><div><font face="courier new, monospace">            pprint('RELEASE button=%d, x=%d, y=%d, xdata=%f, ydata=%f\n' % (</font></div><div><font face="courier new, monospace">                event.button, event.x, event.y, event.xdata, event.ydata))</font></div>



<div><font face="courier new, monospace">        self.fig.canvas.mpl_disconnect(self.id_motion)</font></div><div><font face="courier new, monospace">        self.on_release_print()</font></div><div><font face="courier new, monospace"><br>



</font></div><div><font face="courier new, monospace">    def on_press_draw(self):</font></div><div><font face="courier new, monospace">        pass</font></div><div><font face="courier new, monospace"><br></font></div><div>



<font face="courier new, monospace">    def on_motion_draw(self):</font></div><div><font face="courier new, monospace">        pass</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">    def on_release_print(self):</font></div>



<div><font face="courier new, monospace">        pass</font></div><div><br></div></div></div>
</blockquote></div><br></div>