楔形的pick_event处理程序未调用

时间:2019-09-19 11:29:35

标签: python matplotlib event-handling

我有下面的代码来显示楔形,一旦用户单击补丁,我想做些事情。因此,我将处理程序连接到"pick_event",并通过传递picker=True关键字arg使能够选择补丁。

一切都很好,除非当我实际单击补丁时什么都没有发生,即处理程序似乎没有被调用。

任何人都可以重现该问题或提出解决方案吗?

from matplotlib.patches import Wedge
from matplotlib.collections import PatchCollection
import matplotlib.pyplot as plt

patches = [Wedge((5., 5.), 0.5, 30., 330., picker=True)]

fig, ax = plt.subplots()
ax.add_collection(PatchCollection(patches))
ax.set_xlim([0, 10.])
ax.set_ylim([0, 10.])

fig.canvas.mpl_connect('pick_event', lambda evt: print(evt))

plt.show()

当我添加另一个ax.scatter([2.5], [2.5], picker=True)并单击该点时,将正确调用该处理程序。

1 个答案:

答案 0 :(得分:1)

我认为您需要使用PatchCollection的set_picker函数。我没有尝试,但是在文档中找到了类似的东西。 set_picker documentation