QtWidgets.QApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling,True)在python上根本不起作用

问题描述 投票:0回答:3

我一直在使用 PySide2 和 Python 3.8 编写一个应用程序,我试图启用 HiDPi,我发现在脚本的开头添加它

QtWidgets.QApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling, True)
QtWidgets.QApplication.setAttribute(QtCore.Qt.AA_UseHighDpiPixmaps, True)

应该能解决问题。

但这对我不起作用。窗口以常规 dpi (96ppp) 显示,而整个系统和应用程序以 125% (120ppp) 运行。我做错了什么吗?

代码:

import sys
from PySide2 import QtWidgets, QtGui, QtCore, QtMultimedia

"""
some functions
"""

if __name__ == "__main__":
    QtWidgets.QApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling, True)
    QtWidgets.QApplication.setAttribute(QtCore.Qt.AA_UseHighDpiPixmaps, True)

    app = QtWidgets.QApplication(sys.argv)

    window = QtWidgets.QMainWindow()
    label = QtWidgets.QLabel(window)
    label.setText("hey")
    window.show()
    
    app.exec_()

屏幕截图(屏幕截图上很难看出差异,抱歉): enter image description here

系统规格: Windows 10 专业版 64 位 Python 3.7.8 PySide2 5.15.2

python python-3.x qt5 pyside2 hidpi
3个回答
4
投票

对于 PySide2,据我所知,您需要从 QCoreApplication 运行,在初始化应用程序之前设置属性。

        QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling, True)
        QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_UseHighDpiPixmaps, True)
        app = QtWidgets.QApplication(sys.argv)

0
投票

我在另一台计算机上测试代码时找到了答案。看起来默认的 Qt 缩放算法将 100-149% 的缩放设置设置为 100% 和 150% 或 + 到 200% 缩放。

我的意思是: 如果您将 Windows 10 比例设置为 100% 或 125%,它将以 100% 比例显示

但是,如果您将 Windows 10 比例设置为 150%、175% 或 200%,则窗口将以 200% 比例显示。


0
投票

试试这个:

import os
os.environ["QT_SCALE_FACTOR"] = "1.25"

创建之前

QApplication

您还可以更改该值以使用其他比例因子

© www.soinside.com 2019 - 2024. All rights reserved.