我正在尝试将现有的 PyQt5 应用程序迁移到窗口 10 的高 dpi。
Qt5 本身的文档在这里谈到高 dpi 缩放: http://doc.qt.io/qt-5/highdpi.html
QT_AUTO_SCREEN_SCALE_FACTOR to "1".
但是我不能在 python 代码中适应它:/
任何想法?
确保您使用的是 Qt 5.6+,浏览文档以了解,然后更改您的应用程序初始化代码以在它之前和之后包含一行(用 Python 编写),但它在 C++ 中类似:
os.environ["QT_AUTO_SCREEN_SCALE_FACTOR"] = "1"
qapp = QApplication(sys.argv)
qapp.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)
这可能对像我一样遇到类似问题时找到此线程的其他人有所帮助。
我主要是在具有高 dpi 显示屏的 Windows 10 笔记本电脑上开发
PyQt5
应用程序。在双显示器设置中投影我的屏幕或将应用程序移动到不同的显示器时,我注意到奇怪的行为。基本上,字体大小会发生巨大变化,这会导致布局出现各种问题。
最终,从 Windows 阅读有关 High DPI Desktop App Dev 的信息让我找到了解决方案。他们建议使用
Per-Monitor (V2) DPI Awareness
。好像Qt5
不支持这个,但是Qt6支持,并且默认设置合适。
所以仅仅将我对
PyQt5
的依赖升级到PyQt6
就解决了我的问题。版本升级需要对我的代码进行一些小的修改。一个小问题是 QAction
从 QtGui
移动到 QtWidgets
模块。
对我来说,添加这三个似乎可以解决问题:
os.environ["QT_ENABLE_HIGHDPI_SCALING"] = "1"
os.environ["QT_AUTO_SCREEN_SCALE_FACTOR"] = "1"
os.environ["QT_SCALE_FACTOR"] = "1"
“QT_SCALE_FACTOR”是对我影响最大的一个。