【问题标题】:PyQt - Adjusting for Different Screen Resolution [duplicate]PyQt - 调整不同的屏幕分辨率
【发布时间】:2017-10-09 19:37:17
【问题描述】:

我在一台分辨率为 3840x2160 的计算机上使用 PyQt 开发了一个应用程序。我使用 QtDesigner 创建了几乎所有的 UI 需求,然后在 python 中手动添加了一些我需要的其他东西。部署应用程序后,我意识到目标计算机的分辨率为 1920x1080。应用程序中的一些小部件(通常是那些只有文本/按钮的小部件)很好,但是一旦我开始进入更复杂的布局,事情就不会那么清楚了。具体来说,QLabel 和其他 QItem 相互重叠,图像沿其水平轴不成比例地缩放,并且对象之间的间距减小。以下是说明问题的几张图片。

3480x2160 屏幕(根据 Windows 比例和布局缩放 250%) 注意:这是我在开发时看到的。

3480x2160 屏幕(根据 Windows 比例和布局进行 100% 缩放)

1920x1080 屏幕(根据 Windows 缩放和布局 100% 缩放)

我还注意到,Qt Designer 本身在转换到不同的屏幕分辨率时也有类似的问题(见附图)。

高分辨率屏幕 - QtDesigner

低分辨率屏幕 - QtDesigner

如果我想利用 QtDesigner,在 PyQt 中处理多个屏幕分辨率的正确方法是什么?我知道我可以使用 QDesktopWidget.screenGeometry 检索屏幕分辨率,但是有没有办法一次缩放每个参数而不是手动更改每个项目?避免使用特定的“尺寸政策”会对此有所帮助吗?

【问题讨论】:

  • 您能否检查一下这不是(可能部分)由于 Windows 中配置了不同的屏幕缩放比例? (见pcworld.com/article/2953978/displays/…
  • 屏幕缩放会影响应用程序的外观并没有错,但这似乎不是解决方案。
  • 你的意思是“事情看起来不那么清楚”?您要解决的确切问题是什么?图像是固定的像素尺寸,您通常会提供多张尺寸增加的图像,然后缩小(因为缩小看起来比缩放好得多)与目标小部件尺寸相等或更大的最接近的图像。
  • 感谢您指出不清楚;我更新了问题以更清楚地说明问题,但如果有更多我应该详细说明的地方,请告诉我。

标签: pyqt pyqt5 screen-resolution qt-designer


【解决方案1】:

如果问题更多在于不同的 dpi 而不是分辨率,您可以在创建 QApplication(或任何其他 Qt 类)之前通过在您的应用程序中添加以下行来告诉 Qt 使用高 dpi 缩放/像素图:

# Handle high resolution displays:
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)

我发现这使我的应用程序在我的笔记本电脑(高 dpi、高分辨率)和台式机(普通 dpi、1920x1080)之间切换时表现相同(或至少更相似)。

我不使用 QtDesigner,所以我不知道这个建议如何与 QtDesigner 一起使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-19
    • 2017-03-24
    • 1970-01-01
    • 2017-01-07
    相关资源
    最近更新 更多