-
事件连接
-
事件属性
-
实战1:直方图中矩形的拖拽
-
实战2:鼠标进入和离开
-
相关链接与参考
在博文《OpenCV-Python实战(番外篇)——OpenCV中利用鼠标事件动态绘制图形》中,介绍了 OpenCV
中的事件处理,并利用其进行图形的动态绘制。那么 Matplotlib
作为 Python
的绘图库,能否直接进行事件处理呢?答案是肯定的。作为对《Python-Matplotlib可视化》系列的补充,本文将介绍在 Matplotlib
中事件的处理。
Matplotlib
与许多用户界面工具包配合使用,包括 wxpython
、tkinter
、qt
以及gtk
等,因此不必针对不同的用户界面编写功能重复的代码。Matplotlib
与标准 GUI 事件相比,触发的事件更丰富,其包括事件发生在哪个轴等信息。
要使 Matplotlib
可以接收事件,需要编写一个回调函数(在事件发生时会进行调用),然后将函数连接到事件管理器。
以鼠标事件为例,我们通过以下程序实现打印鼠标点击的位置和按下了哪个按钮的功能:
from matplotlib import pyplot as plt
import numpy as np
fig, ax = plt.subplots()
ax.scatter(np.random.rand(100), np.random.rand(100))
编写回调函数
def onclick(event):
print(‘%s click: button=%d, x=%d, y=%d, xdata=%f, ydata=%f’ %
(‘double’ if event.dblclick else ‘single’, event.button,
event.x, event.y, event.xdata, event.ydata))
将回调函数连接到事件管理器上
cid = fig.canvas.mpl_connect(‘button_press_event’, onclick)
plt.show()
FigureCanvasBase.mpl_connect
方法返回该事件的连接 id
,此 id
可用于断开回调:
fig.canvas.mpl_disconnect(cid)
可以使用 Matplotlib
连接更多事件,具体参见官方文档,在此不在