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

PyQtGraph中ImageItem调用scale()报错,如何设置缩放?

问题

参考旧教程实现频谱图时,调用ImageItem.scale()设置缩放触发错误:

TypeError: ImageItem.scale() takes no arguments (4 given)

查看源码发现当前调用的是Qt QGraphicsItem的无参scale()函数(仅返回当前缩放值),但教程中的代码是传入两个参数设置x、y方向的缩放:

img.scale(t[-1] / np.size(Sxx, axis=1),
          f[-1] / np.size(Sxx, axis=0))
解决方法

在新版本的pyqtgraph中,ImageItem不再自带可传参的scale()方法,要分别设置x、y方向的缩放,你可以用以下几种方式:

  • 使用QGraphicsItem的重载scale方法
    直接调用带两个参数的scale(sx, sy)方法,分别传入x、y方向的缩放比例:

    img.scale(t[-1]/np.size(Sxx, axis=1), f[-1]/np.size(Sxx, axis=0))
    

    若仍报错,可换用变换矩阵的方式。

  • 通过变换矩阵设置缩放
    借助QTransform构造缩放矩阵,再用setTransform()应用到ImageItem:

    from PyQt5.QtGui import QTransform
    # 若使用PySide系列库,导入对应模块的QTransform即可
    sx = t[-1] / np.size(Sxx, axis=1)
    sy = f[-1] / np.size(Sxx, axis=0)
    img.setTransform(QTransform().scale(sx, sy))
    
  • 直接设置图像显示范围(更适配频谱图场景)
    用setRect()定义图像的显示区域,让图像自动匹配时间、频率轴的范围,无需手动计算缩放比例:

    img.setRect(0, 0, t[-1], f[-1])
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 04:16:17