PyQt5 Resize 应用程序以适应不同的显示器

Posted

技术标签:

【中文标题】PyQt5 Resize 应用程序以适应不同的显示器【英文标题】:PyQt5 Resize app for different displays 【发布时间】:2018-03-01 11:04:30 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

【参考方案2】:

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

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

为了让专为低 DPI 值设计的应用程序在高分辨率显示器上快速运行,请考虑一种缩放选项(让应用程序在 Windows 上以 DPI Unaware 的方式运行或将环境变量 QT_AUTO_SCREEN_SCALE_FACTOR 设置为“1”。这些不过,选项可能会导致一些缩放或绘画伪影。

从长远来看,应用程序应该适合在未经修改的情况下运行:

始终使用 QPainter 绘图 API 的 qreal 版本。 根据屏幕大小调整窗口和对话框的大小。 将布局和绘图代码中的硬编码尺寸替换为根据字体指标或屏幕尺寸计算得出的值。

在 shell 中,您可以执行以下操作:

$ export QT_AUTO_SCREEN_SCALE_FACTOR=1
$ python my_application.py

【讨论】:

请查看编辑。另请注意,该程序将由没有编程知识的人运行,因此我需要该程序自行设置调整大小。 这就是为什么我建议你阅读整篇文章:) 这里引用的太多了。环境变量只是为了测试它是否有效。 好的就行。谢谢 感谢您的链接。我最终通过将 QT_DEVICE_PIXEL_RATIO 设置为 auto 来让它工作。据说这已被弃用,但我不知道为什么。它似乎运作良好。 我认为你应该设置Qt::AA_EnableHighDpiScaling。在 C++ 中,它将是 myApplication.setAttribute(Qt::AA_EnableHighDpiScaling);,不确定它是如何转换为 Python 的。

以上是关于PyQt5 Resize 应用程序以适应不同的显示器的主要内容,如果未能解决你的问题,请参考以下文章

PyQt5 中当窗口大小改变时,如何去调整控件的位置以适应窗口大小改变的思考

c#控件多行显示不同字体大小

PyQt5 PushButton 未显示

Python 小白从零开始 PyQt5 项目实战窗口切换的堆叠布局

Python 小白从零开始 PyQt5 项目实战窗口切换的堆叠布局

Python Django撸个WebSSH操作Kubernetes Pod(下)- 终端窗口自适应Resize