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

2024-10-03 17:21:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在用PySide2和Python3.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 Pro 64位 Python 3.7.8 PySide2 5.15.2


Tags: importtrue应用程序系统syswindowqtaa
2条回答

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

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

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

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

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

相关问题 更多 >