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
和{-wthread -pylab
,ipython qtconsole --pylab=inline
,都不会有任何区别。我得到的连接id是cid0 == cid1 == 6
。在
编辑2:我的问题仍然存在于matplotlib版本1.2.x
和TkAgg
后端,sys.version 2.7.2+ (default, Oct 4 2011, 20:06:09) [GCC 4.6.1]
我试过你的代码,两个动作(鼠标和键盘)都做到了:我每次都“命中”。在
我使用的是Ubuntu10.10、Python2.6.6和MatplotLib0.99.3,它们都是由synaptic安装的(而不是下载最新版本并运行设置.py,因为这让我之前遇到了几个大问题)。在
我还安装了python2.6-dev,因为这在大多数情况下都会添加丢失的“.h”标头。在
希望这有帮助
我想你偶然发现了这个错误:Multiple mpl_connect calls ignored
相关问题 更多 >
编程相关推荐