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

PyQtGraph拖拽至不同屏幕显示时坐标轴错位、数据点偏移如何修复?

PyQtGraph跨显示器显示异常修复方案

核心原因

多显示器设置下缩放比例不一致,Qt高DPI渲染逻辑与PyQtGraph的坐标、边距计算逻辑不匹配,导致窗口移动到外接显示器后渲染错位。

修复步骤

  • 第一步:在初始化QApplication前开启全局高DPI适配
    对应代码如下:
    import sys
    from PyQt5.QtWidgets import QApplication
    from PyQt5.QtCore import Qt
    
    # 开启高DPI缩放支持
    QApplication.setAttribute(Qt.AA_EnableHighDpiScaling)
    QApplication.setAttribute(Qt.AA_UseHighDpiPixmaps)
    # Qt 5.14及以上版本可额外添加下面这行,让缩放比例精确适配不同显示器
    QApplication.setHighDpiScaleFactorRoundingPolicy(Qt.HighDpiScaleFactorRoundingPolicy.PassThrough)
    
    app = QApplication(sys.argv)
    # 后续原有业务代码
    
  • 第二步:升级PyQtGraph到最新稳定版
    低于0.12.0的PyQtGraph版本存在大量高DPI适配已知问题,执行以下命令升级:
    pip install --upgrade pyqtgraph
  • 第三步:可选适配,窗口移动时强制重绘
    如果前两步操作后仍有错位问题,重写绘图控件的移动事件,每次窗口移动后强制重新计算边界并重绘:
    from pyqtgraph import PlotWidget
    
    class CustomPlotWidget(PlotWidget):
        def moveEvent(self, event):
            super().moveEvent(event)
            self.plotItem.recomputeBoundingRect()
            self.plotItem.update()
            self.update()
    
  • 第四步:可选手动固定边距
    如果仍存在坐标轴显示不全的问题,手动设置绘图区域边距,避免自动计算出错:
    your_plot_widget.plotItem.setContentsMargins(10, 10, 10, 10)
    四个参数依次对应左、上、右、下的边距数值,可根据实际显示效果调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 07:09:02