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
backend, sys.version 2.7.2+ (default, Oct 4 2011, 20:06:09) [GCC 4.6.1]