【问题标题】:PyQt 5 and 4k screenPyQt 5 和 4k 屏幕
【发布时间】:2017-05-10 21:58:53
【问题描述】:

我正在尝试将现有 PyQt5 应用迁移到窗口 10 的高 dpi。

Qt5 本身的文档在这里谈到了高 dpi 缩放: http://doc.qt.io/qt-5/highdpi.html

QT_AUTO_SCREEN_SCALE_FACTOR to "1".

但我无法在 python 代码中进行调整:/

有什么想法吗?

【问题讨论】:

  • Qt 文档说将该参数设置为环境变量。因此,您需要了解如何在 Python 中执行此操作:stackoverflow.com/q/5971312 确保在导入 PyQt5 之前执行此操作。
  • 我试过os.environ["QT_AUTO_SCREEN_SCALE_FACTOR"] = "1",但没有任何改变。然后我在这里发现bablabs.tistory.com/30 我必须另外使用app.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling),但现在我有以下错误:AttributeError: type object 'Qt' has no attribute 'AA_EnableHighDpiScaling'
  • 听起来您使用的是较旧的 Qt 版本,它没有实现适当的 HighDPI 支持。
  • 谢谢,我使用的是 qt 5.4.1,显然 hdpi 支持从 5.6 开始,我会尽快更新它:D

标签: python qt5 pyqt5 dpi


【解决方案1】:

确保您使用的是 Qt 5.6+,skim the docs to be aware,然后将您的应用程序初始化代码更改为在其前一行和后一行(用 Python 编写),但在 C++ 中类似:

os.environ["QT_AUTO_SCREEN_SCALE_FACTOR"] = "1"
qapp = QApplication(sys.argv)
qapp.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)

【讨论】:

  • 我不确定这是否适合我。如果我将窗口移动到设置为不同缩放值的监视器,则窗口中内容的大小会显着波动。我希望对象的大小看起来大致相同,或者至少不会截断不同窗口中的文本。此功能版本是否依赖?检查我的版本为described here,我有QT_VERSION_STR: 5.9.4PYQT_VERSION_STR: 5.9.2SIP_VERSION_STR: 4.19.8
  • @StevenC.Howell 如果您在 Windows 上右键单击可执行文件,您可以检查 DPI 缩放的兼容性设置并尝试各种值,看看是否可以修复它。也可以试试os.environ["QT_ENABLE_HIGHDPI_SCALING"] = "1"
  • 我在 QGIS 插件(Qt 5.11 和 5.15)中尝试这个,绝对没有乐趣,而且我在崩溃后崩溃......有人对此有任何见解吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-10
  • 1970-01-01
  • 2020-02-25
  • 1970-01-01
  • 2016-10-11
  • 1970-01-01
  • 2012-09-06
相关资源
最近更新 更多