Matplotlib несколько подключений к обработчику событий?

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()

С помощью приведенного выше кода, почему у меня не может быть как нажатия на кнопку мыши, так и нажатия клавиш нажатия клавиш? Кажется, что в приведенном выше порядке работают только ключевые события прессования, тогда как если я поменяю строки 10 и 11 вокруг (порядок cid0 и cid1), тогда будут работать только события мыши. То есть в зависимости от того, какой из них я подключил, сначала запускает обработчик событий. Является ли это встроенным ограничением matplotlib, или я пытаюсь подключить несколько событий не так?

изменить с дополнительной информацией. Мой matplotlib.__version__ - 1.1.0. Я пробовал с GTKAgg и TkAgg бэкендами с тем же результатом. Использование python и ipython, с или без -wthread -pylab, ipython qtconsole --pylab=inline, не имеет значения. Идентификаторы соединения, которые я получаю, являются cid0 == cid1 == 6.

edit 2. Моя проблема по-прежнему сохраняется сегодня с версией matplotlib 1.2.x и TkAgg, sys.version 2.7.2+ (default, Oct 4 2011, 20:06:09) [GCC 4.6.1]

Ответ 2

Я попробовал ваш код, и оба действия (мышь и клавиатура) сделали трюк: я каждый раз "ударял".

Я использую ubuntu 10.10, python 2.6.6 и matplotlib 0.99.3, все они установлены синаптической (не загружая последнюю версию и не запуская setup.py, так как это ранее приводило меня к нескольким большим проблемам).

У меня также установлен python2.6-dev, так как это добавляет отсутствующие заголовки ".h" в большинстве случаев.

Надеюсь, что это поможет.