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
相关产品推荐
相关产品推荐

