PyQt 5.10 - Включение поддержки высокого разрешения для MacOS, плохое качество Pixmap - PullRequest
0 голосов
/ 02 мая 2018

Мое приложение PyQt, работающее в MacOS (с Retina-дисплеем с высоким разрешением), похоже, работает неправильно. Например, на рисунке ниже показан размер Pixmap 30x30 (слева) рядом с масштабированным вручную изображением (справа) с помощью приложения «Просмотр» (программа просмотра изображений MacOSX по умолчанию). Оба визуально имеют одинаковые размеры на моем экране, но обратите внимание, что они имеют разное разрешение - растровое изображение слева имеет значительно более низкое качество.

High DPI problem example

Я прочитал здесь и здесь , что для запуска PyQt 5.10 должно быть достаточно для автоматической поддержки дисплеев с высоким DPI на MacOS, но из личного исследования кажется, что приложение находится в процессе отображается с «нормальным» разрешением и масштабируется.

Есть какие-нибудь идеи как это исправить? Я попытался установить QtWidgets.QApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling) и QtWidgets.QApplication.setAttribute(QtCore.Qt.AA_DisableHighDpiScaling), но ни один из устанавливаемых атрибутов, похоже, ничего не делает.

1 Ответ

0 голосов
/ 06 мая 2018

Мне удалось решить проблему с растровыми изображениями с низкой плотностью и низким разрешением, сделав вывод о том, что растровое изображение 30х30 не должно быть таким большим, как на моем экране - в конце концов, я обнаружил, что мне нужно используйте 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
...