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

PySide2在Windows高DPI≥125%缩放下光标无法点击的异常问题

问题背景
  • 异常出现环境:Windows 10、Windows 11 系统,使用 5.15.2.1 版本 PySide2 开发桌面应用
  • 触发条件:系统开启高DPI显示,显示缩放比例设置为125%及以上
  • 异常表现:应用可正常启动、界面渲染无明显异常,但无法进行任何交互操作,光标状态异常,点击操作无任何响应
  • 现象参考:高DPI场景下PySide2应用交互失效截图
根因说明

PySide2 5.15.2.1 版本内置的高DPI适配逻辑在Windows平台非整数缩放场景存在坐标映射bug:界面渲染层按缩放后的尺寸绘制,但窗口消息层的点击坐标没有做对应换算,导致点击位置和实际控件位置完全错位,表现为无法点击、光标状态异常。

修复方案

代码层修复(推荐,一劳永逸)

必须在创建QApplication实例之前,显式配置Qt的高DPI相关属性,注意配置代码不能放在QApplication创建之后,否则不生效。参考代码如下:

# 以下配置必须放在PySide2相关逻辑的最靠前位置
import sys
from PySide2.QtCore import Qt
from PySide2.QtWidgets import QApplication

# 开启高DPI缩放支持
QApplication.setAttribute(Qt.AA_EnableHighDpiScaling, True)
# 启用高DPI下的高清图标渲染
QApplication.setAttribute(Qt.AA_UseHighDpiPixmaps, True)
# 关闭原生控件兄弟节点创建逻辑,修复非整数缩放下坐标错位问题
QApplication.setAttribute(Qt.AA_DontCreateNativeWidgetSiblings, True)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    # 后续业务窗口初始化逻辑写在此处
    # ...
    sys.exit(app.exec_())

无代码修改兜底方案

如果暂时无法修改代码,可通过以下方式解决:

  • 兼容性设置修复:右键点击程序exe文件,选择「属性-兼容性-更改高DPI设置」,勾选「替代高DPI缩放行为」,缩放执行主体选择「应用程序」,保存设置后重启程序即可
  • 版本升级修复:将PySide2版本升级到5.15.2.3及以上官方正式版本,该版本已经合入Windows平台非整数缩放的坐标映射修复补丁,无需额外配置即可正常运行
  • 临时规避:将系统显示缩放比例调整为100%、200%这类整数缩放值,即可恢复交互,仅适合临时调试使用,不推荐作为面向用户的长期方案

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 06:12:16