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 .__ версия __
- 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+ (по умолчанию, октябрь 4 2011, 20:06:09) [GCC 4.6.1]