PyQt 5.10 - 为MacOS启用高DPI支持,Pixmap质量差

时间:2018-05-02 04:37:49

标签: python qt pyqt qt5 pyqt5

我在MacOS上运行的PyQt应用程序(带有高DPI Retina显示屏)似乎无法正常工作。例如,下图显示了通过预览应用程序(MacOSX默认图像查看器)手动缩放图像(右侧)旁边的Pixmap尺寸30x30(左)。两者在我的屏幕上在视觉上是相同的尺寸,但请注意它们具有不同的分辨率 - 左边的像素图的质量明显较低。

High DPI problem example

我读了herehere运行PyQt 5.10应该足以自动支持MacOS上的高DPI显示,但是从个人研究来看似乎the application is being rendered at the “normal” resolution and scaled up.

有关于如何解决这个问题的想法吗?我尝试设置QtWidgets.QApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)QtWidgets.QApplication.setAttribute(QtCore.Qt.AA_DisableHighDpiScaling),但设置的属性似乎都没有做任何事情。

1 个答案:

答案 0 :(得分:0)

通过推断30x30 pixmap不应该像我屏幕上那么大的事实,我能够解决低密度,低分辨率像素图的问题 - 最后,我发现我需要使用setDevicePixelRatio(X)其中X是大于1.0的浮点数。请参阅以下示例:

# Device pixel ratio must be set AFTER loading the data!
print(pix_map.devicePixelRatio()) # 1.0
pix_map.loadFromData(image_data)
pix_map.setDevicePixelRatio(2.0)
print(pix_map.devicePixelRatio()) # 2.0