2011-08-01 13 views
10
import sys 
import matplotlib 
import matplotlib.pyplot as plt 
print matplotlib.__version__, matplotlib.get_backend() 

def hit(event): 
    sys.stderr.write('hit\n') 

fig = plt.figure() 
cid0 = fig.canvas.mpl_connect('key_press_event', hit) 
cid1 = fig.canvas.mpl_connect('button_press_event', hit) 
print cid0, cid1 
plt.show() 

Con el código anterior, ¿por qué no puedo tener eventos de pulsación de mouse y eventos de pulsación de teclas presionando hit? Parece que en el orden de arriba solo funcionan los eventos de pulsación de tecla, mientras que si cambio las líneas 10 y 11 (orden cid0 y asignación cid1), entonces solo funcionan los eventos del mouse. Es decir. El que yo conecte primero encierra el controlador de eventos. ¿Es esto una limitación incorporada de matplotlib, o estoy intentando conectar múltiples eventos de forma incorrecta?matplotlib conexiones múltiples a un controlador de eventos?

editar con más información: Mi matplotlib.__version__ es . He intentado con los backends GTKAgg y TkAgg con el mismo resultado. El uso de python e ipython, con o sin -wthread -pylab, ipython qtconsole --pylab=inline, no hace la diferencia. Los ID de conexión que obtengo son cid0 == cid1 == 6.

edición 2: Mi problema sigue siendo hoy en día con la versión matplotlib 1.2.x y TkAgg backend, sys.version 2.7.2+ (default, Oct 4 2011, 20:06:09) [GCC 4.6.1]

+0

Su código funciona bien para mí. Lo he intentado con "ipython -pylab" seguido de "ejecutar yourcode" y "python yourcode.py" - aplausos. Creo que estoy usando el backend de GTK, pero no estoy seguro. ¿Bajo qué condiciones estás corriendo? –

+0

interesante. ¿podría decirme su 'sys.version',' matplotlib.backends.backend' y su 'matplotlib .__ version__'? – wim

+0

mina son ''2.7.1+ (r271: 86832, 11 de abril de 2011, 18:13:53) \ n [GCC 4.5.2]' ','' GTKAgg'', y ''1.1.0'', respectivamente, por cierto. – wim

Respuesta

0

me trataron su código, y ambos las acciones (ratón y teclado) resolvieron el problema: que tenía " golpear "cada vez".

Uso ubuntu 10.10, python 2.6.6 y matplotlib 0.99.3, todos instalados por synaptic (no descargando la última versión y ejecutando setup.py, ya que esto me ha llevado a varios problemas importantes anteriormente).

También tengo python2.6-dev instalado, ya que esto agrega los encabezados faltantes ".h" en la mayoría de los casos. .

Esperanza esto ayuda

+0

sí, lo he tenido trabajando en el pasado antes con las versiones sinápticas. – wim

+0

¿Qué backend estás usando? Yo sobre todo tengo importaciones de back-end explícitos, como son: desde matplotlib.backends.backend_gtkagg FigureCanvasGTKAgg importación \t \t como lienzo pero cuando no se especifica, se utiliza el valor predeterminado de un archivo: /home/project29/.matplotlib/.matplotlibrc backend : GTKAgg – Louis

+0

(demasiado tarde para completar la edición anterior) - También eche un vistazo a http://matplotlib.sourceforge.net/users/customizing.html – Louis

Cuestiones relacionadas