更换高分辨率显示器后PyQt5字体缩放异常问题求助
PyQt5高分辨率显示器字体异常放大解决方案
代码层面修复
调整高DPI属性与缩放策略
必须在QApplication实例化之前设置以下属性,确保加载顺序正确:
from PyQt5 import QtCore, QtWidgets # 启用高DPI缩放与高清图片支持 if hasattr(QtCore.Qt, 'AA_EnableHighDpiScaling'): QtWidgets.QApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling, True) if hasattr(QtCore.Qt, 'AA_UseHighDpiPixmaps'): QtWidgets.QApplication.setAttribute(QtCore.Qt.AA_UseHighDpiPixmaps, True) # 设置缩放策略,避免系统过度缩放导致字体过大 QtWidgets.QApplication.setHighDpiScaleFactorRoundingPolicy( QtCore.Qt.HighDpiScaleFactorRoundingPolicy.PassThrough ) # 实例化应用 app = QtWidgets.QApplication([])
强制全局字体大小
如果样式表单独设置无效,直接给整个应用设置全局字体:
# 方法1:通过QFont设置 base_font = QtWidgets.QFont() base_font.setPointSize(10) # 根据实际需求调整字号 app.setFont(base_font) # 方法2:通过全局样式表设置 app.setStyleSheet("* { font-size: 10pt; }")
强制固定缩放因子
若上述方法仍无效,可直接通过环境变量锁定缩放比例:
import os # 强制缩放因子为1.0,避免系统自动放大 os.environ["QT_SCALE_FACTOR"] = "1.0" # 注意:此代码需放在导入PyQt5模块之前,或QApplication实例化之前
Qt Designer工具修复
- 打开Qt Designer,依次点击
工具→选项→界面构建,找到高DPI缩放选项,选择「禁用高DPI缩放」或手动设置合适的缩放因子; - 若上述操作无效,可修改Qt Designer启动参数:右键快捷方式→
属性→目标栏末尾添加--QT_SCALE_FACTOR=1.0,例如:D:\Qt\5.15.2\mingw81_64\bin\designer.exe --QT_SCALE_FACTOR=1.0。
系统级兼容性设置(Windows)
找到你的Python程序或打包后的exe文件,右键→属性→兼容性→更改高DPI设置,勾选「替代高DPI缩放行为」,下拉菜单选择「应用程序」,让系统不再强制缩放程序界面。
内容的提问来源于stack exchange,提问作者Andrew
相关产品推荐
相关产品推荐

