PyQt - 针对不同的屏幕分辨率进行调整

aoh*_*aoh 7 pyqt screen-resolution qt-designer pyqt5

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

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

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

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

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

高分辨率屏幕 - QtDesigner

分辨率较低的屏幕 - QtDesigner

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

Bri*_*n K 7

如果问题更多地在于不同 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)
Run Code Online (Sandbox Code Playgroud)

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

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