Matplotlib"pick_event"在使用FigureCanvasTkAgg的嵌入式图形中不起作用

Ada*_*tro 5 python events tkinter matplotlib

我正在尝试处理一些事件来执行用户与嵌入式子图的交互到Tkinter框架中.就像在这个例子中

使用"key_press_event"和"button_press_event"可以正常工作,但不适用于"pick_event".

我在链接中修改了这个例子,只需在mpl_connect调用后添加以下代码:

def on_button_press(event):
    print('you pressed mouse button')

canvas.mpl_connect('button_press_event', on_button_press)

def on_pick(event):
    print('you picked:',event.artist)

canvas.mpl_connect('pick_event', on_pick)
Run Code Online (Sandbox Code Playgroud)

为什么"pick_event"不适用于嵌入式图形?如何让它发挥作用?

我的配置详细:

  • Windows 10
  • Python 3.5(conda版)
  • Matplotlib 1.5.3通过pip安装

提前致谢!

Ada*_*tro 7

好吧,我解决了......

大多数事件我们只需要使用mpl_connect方法来实现魔法.我的错误是我没有注意到我们需要明确地说我们的情节是"可选择的" picker=True,只有在艺术家点击时才会触发事件,并且picker=x其中x一个整数是触发器的像素容差.因此,除了我在问题中选择的更改,我们应该替换

a.plot(t, s)对于a.plot(t, s,picker=True)a.plot(t, s,picker=10)