Приложение 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.

Другие вопросы по тегам