首页 > 解决方案 > 未调用 Wedge 的 pick_event 处理程序

问题描述

我有下面的代码来显示一个楔子,一旦用户点击补丁,我想做一些事情。因此,我将一个处理程序连接到 ,"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)并单击该点时,将正确调用处理程序。

标签: pythonmatplotlibevent-handling

解决方案


我认为您需要使用set_pickerPatchCollection 的功能。我没有尝试,但我在文档中发现了类似的东西。 set_picker 文档


推荐阅读