You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

matplotlib FigureCanvasQTAgg无set_cursor属性,Qt嵌入绘图报错

修复方案

方法1:调用Qt原生驼峰式方法

FigureCanvasQTAgg继承自Qt的QWidget,但matplotlib未暴露下划线命名的set_cursor,需使用Qt原生的驼峰式setCursor方法:

from PyQt5.QtGui import QCursor, Qt

# 替换原代码的set_cursor为setCursor
fig.canvas.setCursor(QCursor(Qt.PointingHandCursor))

方法2:直接操作底层Qt Widget实例

如果方法1不生效,可获取canvas对应的Qt原生Widget对象再设置:

from PyQt5.QtGui import QCursor, Qt

qt_widget = fig.canvas.widget()
qt_widget.setCursor(QCursor(Qt.PointingHandCursor))

方法3:使用matplotlib原生Cursor类

若想贴合matplotlib生态,可使用其自带的Cursor工具类管理鼠标样式:

from matplotlib.widgets import Cursor

# 创建Cursor对象,指定pointer样式
cursor = Cursor(fig.gca(), useblit=True, cursor='pointer')

额外注意事项

  • 切换后端matplotlib.use("Qt5Agg")必须在导入matplotlib.pyplot之前执行,否则不生效:
    import matplotlib
    matplotlib.use("Qt5Agg")
    import matplotlib.pyplot as plt
    

内容的提问来源于stack exchange,提问作者snakeslayer09

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 06:30:10