Приложение PyQt5 Resize для разных дисплеев
Я использую PyQt5 и Python 3.6.4 для разработки пользовательского интерфейса для программы. Это было сделано на мониторе с разрешением 720p, однако теперь с использованием того же кода на мониторе 4k все, кроме текста, ничтожно мало. Как мне изменить размер всего приложения, чтобы оно выглядело одинаково на всех мониторах: (720p, 1080p, 4k и т. Д.) Программа должна запускаться в Windows через исполняемый файл, созданный путем компиляции кода Python. ура
3 ответа
Это в некоторой степени зависит от системы, поэтому было бы полезно, если бы вы упомянули целевую платформу (ы).
Поскольку PyQt5 - это просто оболочка для Qt5, я думаю, что дисплеи с высоким разрешением из руководства Qt применимы. Ссылаясь на соответствующий бит (но вы должны прочитать все это):
Чтобы приложение, разработанное для мониторов с высоким разрешением, быстро работало на мониторах с высоким разрешением, рассмотрите один из вариантов масштабирования (пусть приложение работает в режиме DPI Unaware в Windows или установите для переменной среды QT_AUTO_SCREEN_SCALE_FACTOR значение "1". некоторые артефакты масштабирования или рисования.
В более долгосрочной перспективе приложение должно быть адаптировано для запуска без изменений:
- Всегда используйте qreal версии API рисования QPainter.
- Размер окон и диалогов по отношению к размеру экрана.
- Замените жестко заданные размеры в макетах и коде чертежа на значения, рассчитанные по метрикам шрифта или размеру экрана.
В оболочке вы бы сделали что-то вроде:
$ export QT_AUTO_SCREEN_SCALE_FACTOR=1
$ python my_application.py
Простое исправление 1 строки для тех, кто нуждается
os.environ["QT_AUTO_SCREEN_SCALE_FACTOR"] = "1"
Многие PyQt6/PyQt5 показывают небольшой экран, используя: PyQt6-WebEngine.
# Set the QT_AUTO_SCREEN_SCALE_FACTOR environment variable
import os
os.environ['QT_AUTO_SCREEN_SCALE_FACTOR'] = '1'
#....before
#....
if __name__ == "__main__":
это решит проблему с отображением маленького экрана для ноутбука высокого класса или экрана 4K.