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.

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

Reply via email to