On 08/05/2010 10:54 PM, Jorge Scandaliaris wrote:
> Hi,
> Looking for a way to analyze a set of images I found waitforbuttonpress, which
> basically does what I need: allows me to display a few plots/scatter/etc for 
> as
> long as I need; then when pressing a key move to the next image and redo all
> plots/scatter/etc.
> Now my problem is that waitforbuttonpress (or the (mis)use I gave it) forces 
> me
> to close the ipython session frequently and start over again. This is at least
> inconvenient, and a few times forced me to recalculate things that took some
> time (and that I had forgot to save).
> I know this might be backend-related. I use GTKAgg, on ubuntu 10.04, mpl-1.0.0
> (locally built). Below you'll find a script I created where I see this 
> behavior,
> the ipython console's output, and the steps I followed.
>
> Steps followed and description:
> 1- Run script, click mouse a few times (plot is closed and redrawn), finally
> press a key. The plot is closed, and the console returns to be active. This
> corresponds to "In [1]" in the ipython console's output
> 2- Trying to run anything at the ipython console results in a looong delay 
> and a
> message like in "In [2]" at the console. The console works fine after this,
> though, at least with non matplotlib-related stuff
> 3- Running the script again results in the output shown in "In [3]". The 
> script
> seems to runs fine, i.e. clicks cause the redrawing of the plot, though 
> pressing
> any key (which should break the loop and end the script) will end the script 
> but
> won't close the plot windows. The console works mostly ok, the only way to 
> close
> the plot window and ipython is by killing the ipython process.
> 4- In some other cases, I ended up with an unresponsive console that required
> killing the ipython process as well.
> This test case is not comprehensive of the things I've experienced, but it 
> might
> show a possible cause of this behavior.

Jorge,

Running mpl from svn, with gtkagg backend, on ubuntu, but with ipython 
0.11alpha1, I can't reproduce the problem; your example works for me.  I 
suspect the difference is that ipython 0.11 uses a non-threaded 
interactive mode, while 0.10 uses the threaded mode.  Is updating your 
ipython an option for you?

Eric

>
> Regards,
>
> Jorge
>
> ------------------------
> Ipython console's output:
>
> In [1]: run doct/intrinsic-images/test_waitforbuttonpress.py
> /home/jscandal/lib/python2.6/site-packages/matplotlib/backend_bases.py:2051:
> DeprecationWarning: Using default event loop until function specific to this 
> GUI
> is implemented
>    warnings.warn(str,DeprecationWarning)
>
> In [2]: run doct/intrinsic-images/test_waitforbuttonpress.py
> Warning: Timeout for mainloop thread exceeded
> switching to nonthreaded mode (until mainloop wakes up again)
>
> In [3]: run doct/intrinsic-images/test_waitforbuttonpress.py
> ---------------------------------------------------------------------------
> ValueError                                Traceback (most recent call last)
>
> /usr/lib/pymodules/python2.6/IPython/Shell.pyc in on_timer(self)
>      847
>      848         update_tk(self.tk)
> -->  849         self.IP.runcode()
>      850         time.sleep(0.01)
>      851         return True
>
> /usr/lib/pymodules/python2.6/IPython/Shell.pyc in runcode(self)
>      455         # code modifies it, we restore our own handling.
>
>      456         try:
> -->  457             signal(SIGINT,sigint_handler)
>      458         except SystemError:
>      459             # This happens under Windows, which seems to have all 
> sorts
>
>
> ValueError: signal only works in main thread
> -------------------------
>
> script used in the test:
> ------------------------
> import numpy as np
> import matplotlib as mpl
> import matplotlib.pyplot as plt
>
> data = np.random.rand(10,2)
>
> while True:
>      fig, ax = plt.subplots(1,1)
>      ax.scatter(data.T[0], data.T[1])
>      plt.show()
>      if fig.waitforbuttonpress(timeout=-1):
>       plt.close('all')
>       break
>      plt.close('all')
>
>
> ------------------------------------------------------------------------------
> This SF.net email is sponsored by
>
> Make an app they can't live without
> Enter the BlackBerry Developer Challenge
> http://p.sf.net/sfu/RIM-dev2dev
> _______________________________________________
> Matplotlib-users mailing list
> Matplotlib-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/matplotlib-users


------------------------------------------------------------------------------
This SF.net email is sponsored by 

Make an app they can't live without
Enter the BlackBerry Developer Challenge
http://p.sf.net/sfu/RIM-dev2dev 
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to