error on different mouse events

Hello everyone,
I’m trying to do a program that opens two different plots and select one point of each one with a mouse event. Here you have my example:

···

import pylab

def click(event):
global x # allow to change global variable
if event.button == 1:
if event.inaxes:
x = event.xdata # change global variable
print " x - intern = ", x

        pylab.disconnect(cid)
        pylab.close()
return x

xlist = [] # list for x values
global x
#for i in xrange(4):
fig = pylab.figure()
ax = fig.add_subplot(111)
pylab.title(‘primera’)
cid = pylab.connect(‘button_press_event’, click)
pylab.show()
print " x - extern = ", x
xlist.append(x)
pylab.close()

fig = pylab.figure()

ax = fig.add_subplot(111)
pylab.title(‘segunda’)
cid = pylab.connect(‘button_press_event’, click)
pylab.show()
print " x - extern = ", x
xlist.append(x)
pylab.close()

The problem is that the click event only works with the first plot, in the second one I get the plot, but not the mouse event. So my output is:
x - intern = 0.696277915633
x - extern = 0.696277915633
x - extern = 0.696277915633
As you see, I only get the x-intern once.

Does anybody know what I’m doing wrong?

Hello darkside,

I tried your example and it works for me (with mpl-svn) using GTKAgg and
doesn't work (like you reported) using TKAgg (Is this a bug?).
Maybe you can switch to GTKAgg?
Otherwise you should report the mpl-version you are using.

-------------------------------------

import matplotlib
#matplotlib.use("TKAgg")
matplotlib.use("GTKAgg")
import pylab

---------------------------------------

best regards,
Matthias

···

On Thursday 28 June 2007 19:39, darkside wrote:

Hello everyone,
I'm trying to do a program that opens two different plots and select one
point of each one with a mouse event. Here you have my example:

--------------------------
import pylab

def click(event):
    global x # allow to change global variable
    if event.button == 1:
        if event.inaxes:
            x = event.xdata # change global variable
            print " x - intern = ", x
            pylab.disconnect(cid)
            pylab.close()
return x

xlist = [] # list for x values
global x
#for i in xrange(4):
fig = pylab.figure()
ax = fig.add_subplot(111)
pylab.title('primera')
cid = pylab.connect('button_press_event', click)
pylab.show()
print " x - extern = ", x
xlist.append(x)
pylab.close()

fig = pylab.figure()

ax = fig.add_subplot(111)
pylab.title('segunda')
cid = pylab.connect('button_press_event', click)
pylab.show()
print " x - extern = ", x
xlist.append(x)
pylab.close()
--------------------------------------------------
The problem is that the click event only works with the first plot, in the
second one I get the plot, but not the mouse event. So my output is:
x - intern = 0.696277915633
x - extern = 0.696277915633
x - extern = 0.696277915633
As you see, I only get the x-intern once.

Does anybody know what I'm doing wrong?

It’s unbeliable. Yes, it works now!!! At least… I had spend a lot of time with these!
So maybe is it a bug? Matplotlib developers: here you have a bug.

Thank you very much for your help, I coud never have thougt that it was the problem.

2007/6/28, Matthias Michler <MatthiasMichler@…361…>:

···

Hello darkside,

I tried your example and it works for me (with mpl-svn) using GTKAgg and
doesn’t work (like you reported) using TKAgg (Is this a bug?).
Maybe you can switch to GTKAgg?
Otherwise you should report the mpl-version you are using.


import matplotlib
#matplotlib.use(“TKAgg”)
matplotlib.use(“GTKAgg”)
import pylab


best regards,

Matthias

On Thursday 28 June 2007 19:39, darkside wrote:

Hello everyone,
I’m trying to do a program that opens two different plots and select one
point of each one with a mouse event. Here you have my example:


import pylab

def click(event):
global x # allow to change global variable
if event.button == 1:
if event.inaxes:
x = event.xdata # change global variable
print " x - intern = ", x
pylab.disconnect(cid)
pylab.close()

return x

xlist = [] # list for x values
global x
#for i in xrange(4):
fig = pylab.figure()
ax = fig.add_subplot(111)
pylab.title(‘primera’)

cid = pylab.connect(‘button_press_event’, click)
pylab.show()
print " x - extern = ", x
xlist.append(x)
pylab.close()

fig = pylab.figure()

ax = fig.add_subplot(111)
pylab.title(‘segunda’)
cid = pylab.connect(‘button_press_event’, click)
pylab.show()
print " x - extern = ", x
xlist.append(x)

pylab.close()

The problem is that the click event only works with the first plot, in the
second one I get the plot, but not the mouse event. So my output is:

x - intern = 0.696277915633
x - extern = 0.696277915633
x - extern = 0.696277915633
As you see, I only get the x-intern once.

Does anybody know what I’m doing wrong?


This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.

http://sourceforge.net/powerbar/db2/


Matplotlib-users mailing list

Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users