如何在Matplotlib中创建自定义鼠标光标

mr_*_*_js 8 matplotlib cursor

我有兴趣创建自定义鼠标光标,以便在某些线或点上拖动和拾取事件期间,鼠标从箭头变为手(或其他符号).这样做的最佳方法是什么.我认为这是可能的,因为在缩放操作期间鼠标光标变为小的十字线.如果可能,使用PyQt/PySide后端的解决方案将是更可取的.

tyl*_*ler 4

你需要的是 mpl_canvas。请按照本教程进行设置。

使用 mpl_canvas,您可以设置触发的事件。

fig = matplotlib.figure.Figure()
cid = fig.canvas.mpl_connect('button_press_event', your_method)
Run Code Online (Sandbox Code Playgroud)

这里有多种信号(在事件下列出)。

设置信号后,将使用事件参数调用 your_method。所以做类似的事情:

def your_method(event):
    print('Your x and y mouse positions are ', event.xdata, event.ydata)
Run Code Online (Sandbox Code Playgroud)

单击相应的类别和描述链接即可查看事件的具体内容。对于特定的 mpl_canvas 事件。

在您的具体情况下,要更改鼠标的外观,您的方法应如下所示:

 def your_method(event):
     #changes cursor to +
     QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.CrossCursor))
Run Code Online (Sandbox Code Playgroud)