matplotlib多个连接到一个事件处理程序?

2024-10-01 11:38:38 发布

您现在位置:Python中文网/ 问答频道 /正文

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和{}后端,结果相同。使用python和ipython,无论是否使用-wthread -pylabipython qtconsole --pylab=inline,都不会有任何区别。我得到的连接id是cid0 == cid1 == 6。在

编辑2:我的问题仍然存在于matplotlib版本1.2.xTkAgg后端,sys.version 2.7.2+ (default, Oct 4 2011, 20:06:09) [GCC 4.6.1]


Tags: importeventmatplotlibversionconnectsysfig事件
2条回答

我试过你的代码,两个动作(鼠标和键盘)都做到了:我每次都“命中”。在

我使用的是Ubuntu10.10、Python2.6.6和MatplotLib0.99.3,它们都是由synaptic安装的(而不是下载最新版本并运行设置.py,因为这让我之前遇到了几个大问题)。在

我还安装了python2.6-dev,因为这在大多数情况下都会添加丢失的“.h”标头。在

希望这有帮助

我想你偶然发现了这个错误:Multiple mpl_connect calls ignored

相关问题 更多 >