Matplotlib B1-Motion(按住键的鼠标运动)等效吗?

Syn*_*ose 2 python matplotlib python-2.7

是否有与 Tkinter 键类似的 matplotlib 事件<B1-Motion>?这样只有当用户在移动鼠标时按住 B1 时才会调用函数吗?

我目前正在研究文档,但没有看到这样的选项,如果没有,是否有一些简单的方法可以重新创建它?

def notify_motion(event):
    """
    Only called when button 1 is clicked and motion detected
    """

    ...
Run Code Online (Sandbox Code Playgroud)

小智 5

我不知道您是否仍然关心这个问题,无论如何,有一个非常简单的解决方案,使用类button的属性matplotlib.backend_bases.MouseEvent,因为如果按下光标并且释放光标,event.button就会出现这种情况。1None

以下是我通过按住并移动光标来画线的代码:

import matplotlib.pyplot as plt
import numpy as np

def moved_and_pressed(event):
    if event.button==1:
        x = np.append(line.get_xdata(), event.xdata)
        y = np.append(line.get_ydata(), event.ydata)
        line.set_data(x, y)
        fig.canvas.draw()

fig, ax = plt.subplots(1,1, figsize=(5,3), dpi=100)
line, = ax.plot([], [], 'k')
ax.set_xlim(0,10); ax.set_ylim(0,10)
cid = fig.canvas.mpl_connect('motion_notify_event', moved_and_pressed)
plt.show()
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你。