我在MacOS上运行的PyQt应用程序(带有高DPI Retina显示屏)似乎无法正常工作。例如,下图显示了通过预览应用程序(MacOSX默认图像查看器)手动缩放图像(右侧)旁边的Pixmap尺寸30x30(左)。两者在我的屏幕上在视觉上是相同的尺寸,但请注意它们具有不同的分辨率 - 左边的像素图的质量明显较低。
我读了here和here运行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)
,但设置的属性似乎都没有做任何事情。
答案 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