On 25/11/06, Martin Richter <[EMAIL PROTECTED]> wrote:
> Hello everyone,
>
> although I thought this topic had been discussed earlier I wasn't able to find
> it in the archives. So please forgive me if I'm repeating something. Here the
> question I'm not able to answer on my own:

We really shoud wiki more of these email discussions as they come
along. It's so much easier to search there, since things are in some
sort of logical arrangement.

> Is there a possibility to disconnect an event when someone wants to use the
> zoom-to-rectangle mechanism so that the code which originally would be
> executed on the event isn't actually executed as long as the zooming is
> activated? To have an example to talk about:
>
> ############
> from pylab import *
>
> def click(event):
>     """If the left mouse button is pressed: draw a little square. """
>     if event.button==1 and event.inaxes:
>         x,y = event.xdata,event.ydata
>         plot([x],[y],'rs')
>         draw()
>
> plot((arange(100)/99.0)**3)
> gca().set_autoscale_on(False)
> connect('button_press_event',click)
> show()
> ############
>
> If one runs this script and tries to use the zooming he will always add such a
> little red square to the plot. Can this be prevented somehow?
>
Yes, first you need to have a reference to your toolbar handy. It took
me a few minutes to work out how to do this with pylab, since I
usually use it in a wxPython frame where the toolbar is explicity
defined, but apparently in pylab you can use :

tb = get_current_fig_manager().toolbar

Then check the mode attribute of the toolbar in your click script:

if tb.mode = "":
  do_stuff
else
  ignore

So your script becomes:

##############
from pylab import *

def click(event):
    """If the left mouse button is pressed: draw a little square. """
    tb = get_current_fig_manager().toolbar
    if event.button==1 and event.inaxes and tb.mode == '':
        x,y = event.xdata,event.ydata
        plot([x],[y],'rs')
        draw()

plot((arange(100)/99.0)**3)
gca().set_autoscale_on(False)
connect('button_press_event',click)
show()
##############

I hope that helps,

Angus.
-- 
AJC McMorland, PhD Student
Physiology, University of Auckland

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to