用于不同显示器的 PyQt5 调整大小应用程序

PyQt5 Resize app for different displays

我正在使用 PyQt5 和 Python 3.6.4 设计一个 ui 程序。它是在 720p 显示器上制作的,但现在在 4k 显示器上使用相同的代码,除了文本之外的所有内容都很小。我将如何调整整个应用程序的大小以使其在所有显示器上看起来都一样:(720p、1080p、4k 等) 该程序将通过编译 python 代码创建的可执行文件在 windows 上 运行。 干杯

这在某种程度上取决于系统,因此如果您提到您的目标平台将会有所帮助。

因为 PyQt5 只是 Qt5 的包装器,我认为 Qt 手册中的 High DPI Displays 适用。引用相关位(但你应该阅读整篇文章):

In order to get an application designed for low DPI values running on a high resolution monitors quickly, consider one of the scaling options (let the application run as DPI Unaware on Windows or set the environment variable QT_AUTO_SCREEN_SCALE_FACTOR to "1". These options may incur some scaling or painting artifacts, though.

In the longer term, the application should be adapted to run unmodified:

  • Always use the qreal versions of the QPainter drawing API.
  • Size windows and dialogs in relation to the screen size.
  • Replace hard-coded sizes in layouts and drawing code by values calculated from font metrics or screen size.

在 shell 中,你会做这样的事情:

$ export QT_AUTO_SCREEN_SCALE_FACTOR=1
$ python my_application.py

简单的 1 行修复任何需要的人

os.environ["QT_AUTO_SCREEN_SCALE_FACTOR"] = "1"