gpt4 book ai didi

python - 如何阻止显示分辨率影响 pyqtgraph 图中的轴

转载 作者:行者123 更新时间:2023-12-05 02:02:03 25 4
gpt4 key购买 nike

我正在使用 pyqtgraph 绘制一些数据,并注意到当我将绘图从我的笔记本电脑屏幕移动到第二台显示器时,绘图的比例会受到影响:

笔记本电脑显示器: original laptop

外接显示器: original ext. monitor

请注意坐标轴被“压缩”了,并且绘图在第二台显示器上不再正确缩放。

我发现其他人在网络上报告了类似的问题,但找不到任何真正的解决方案。建议的一种解决方案是使监视器的分辨率相同。我不喜欢这个解决方案,因为我不得不牺牲笔记本电脑的分辨率来适应分辨率较低的外接显示器。

我发现的另一个解决方案是在主循环中添加 app.setAttribute(QtCore.Qt.AA_Use96Dpi) 行,在如下所示实例化 Qapplication 之前,据称让 Qt 忽略操作系统的 DPI 设置:

def main():
import sys
app = QtWidgets.QApplication(sys.argv)
app.setAttribute(QtCore.Qt.AA_Use96Dpi)
MainWindow =GraphWindow()
MainWindow.show()
sys.exit(app.exec_())

这乍一看似乎可行,因为绘制的数据在轴上正确缩放。然而,它似乎并没有真正起作用——添加这条线会影响笔记本电脑上轴的缩放比例,如下所示(相同的数据现在绘制在 x 轴上跨越 0 到 7000 的轴上,并且 - Y 轴上 2 至 -26dB):

laptop_96DPI setting ,

但确实“修复”了将绘图移动到第二台显示器上以使其看起来像上面显示的第一个“原始”笔记本电脑绘图时的问题。

这尤其令人担忧,因为在 app.setAttribute(QtCore.Qt.AA_Use96Dpi) 指令之后的笔记本电脑输出的情况下,“看起来”是正确的,但却歪曲了实际数据。当我第一次绘制数据时,如果包含这条指令,我很容易就会错过这一点。

无论操作系统的 DPI 设置和显示器分辨率如何,正确显示绘图的正确方法是什么?非常奇怪的是,绘制的数据似乎与轴值无关。

这是一个最小的可重现样本:

from PyQt5 import QtWidgets, QtCore
from pyqtgraph import PlotWidget, plot
import pyqtgraph as pg
import sys # We need sys so that we can pass argv to QApplication
import os
from numpy.random import seed
from numpy.random import randint

class MainWindow(QtWidgets.QMainWindow):

def __init__(self, *args, **kwargs):
super(MainWindow, self).__init__(*args, **kwargs)

self.graphWidget = pg.PlotWidget()
self.setCentralWidget(self.graphWidget)

x = [1,2,3,4,5,6,7,8,9,10]
seed(1)
y = randint(5,35,10)

# plot data: x, y values
self.graphWidget.plot(x, y)


def main():
app = QtWidgets.QApplication(sys.argv)
app.setAttribute(QtCore.Qt.AA_Use96Dpi)
main = MainWindow()
main.show()
sys.exit(app.exec_())


if __name__ == '__main__':
main()

最佳答案

setAttribute 解决方案从来没有以这种方式为我工作,windll 操作使 gui 模糊...

在 app = QApplication(sys.argv) 之前添加以下两行解决了我的问题:

QApplication.setHighDpiScaleFactorRoundingPolicy(Qt.HighDpiScaleFactorRoundingPolicy.PassThrough)
QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling, True)

关于python - 如何阻止显示分辨率影响 pyqtgraph 图中的轴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66066707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com