<div dir="ltr">Thanks!<div><br></div><div>Antonio</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Apr 18, 2014 at 11:34 AM, MinRK <span dir="ltr"><<a href="mailto:benjaminrk@gmail.com" target="_blank">benjaminrk@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">There's definitely a chance for fixing this in 2.x. I'll try to work on it this week.</div><div class="HOEnZb">

<div class="h5"><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Apr 18, 2014 at 11:22 AM, 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"><div>Unfortunately I have distributed several notebooks that, due to this regression, don't work anymore once the user upgrade to 2.0.<br>



</div><div><br></div>Any hope this can be fixed in a 2.x release?<div>

<br></div><div>Or, is there is any workaround that does not involve modifying the notebook code? The plot function is loaded from a python file, I can change this but I would rather not change the notebook? In principle I could adding something like get_range() in the notebook for each range selection, but this would spoil the purpose of an interactive range selection.</div>





<div><br></div><div>Thanks,</div><div>Antonio</div></div><div><div><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Apr 18, 2014 at 10:32 AM, MinRK <span dir="ltr"><<a href="mailto:benjaminrk@gmail.com" target="_blank">benjaminrk@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"><div><p style="margin:1.2em 0px!important">This is open as a <a href="https://github.com/ipython/ipython/issues/5407" target="_blank">GitHub Issue</a>. As a result of cleaning up data structures when we think we are done, async output is lost.</p>







<p style="margin:1.2em 0px!important">-MinRK</p>
</div></div><div class="gmail_extra"><br><br><div class="gmail_quote"><div><div>On Thu, Apr 17, 2014 at 11:56 PM, Antonino Ingargiola <span dir="ltr"><<a href="mailto:tritemio@gmail.com" target="_blank">tritemio@gmail.com</a>></span> wrote:<br>







</div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><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><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>
</div></div><br></div></div>_______________________________________________<br>
IPython-dev mailing list<br>
<a href="mailto:IPython-dev@scipy.org" target="_blank">IPython-dev@scipy.org</a><br>
<a href="http://mail.scipy.org/mailman/listinfo/ipython-dev" target="_blank">http://mail.scipy.org/mailman/listinfo/ipython-dev</a><br>
<br></blockquote></div><br></div>
<br>_______________________________________________<br>
IPython-dev mailing list<br>
<a href="mailto:IPython-dev@scipy.org" target="_blank">IPython-dev@scipy.org</a><br>
<a href="http://mail.scipy.org/mailman/listinfo/ipython-dev" target="_blank">http://mail.scipy.org/mailman/listinfo/ipython-dev</a><br>
<br></blockquote></div><br></div>
</div></div><br>_______________________________________________<br>
IPython-dev mailing list<br>
<a href="mailto:IPython-dev@scipy.org" target="_blank">IPython-dev@scipy.org</a><br>
<a href="http://mail.scipy.org/mailman/listinfo/ipython-dev" target="_blank">http://mail.scipy.org/mailman/listinfo/ipython-dev</a><br>
<br></blockquote></div><br></div>
</div></div><br>_______________________________________________<br>
IPython-dev mailing list<br>
<a href="mailto:IPython-dev@scipy.org">IPython-dev@scipy.org</a><br>
<a href="http://mail.scipy.org/mailman/listinfo/ipython-dev" target="_blank">http://mail.scipy.org/mailman/listinfo/ipython-dev</a><br>
<br></blockquote></div><br></div>