高分辨率屏幕上的 PyQt GUI 大小

Posted

技术标签:

【中文标题】高分辨率屏幕上的 PyQt GUI 大小【英文标题】:PyQt GUI size on high resolution screens 【发布时间】:2022-01-21 18:49:20 【问题描述】:

我不久前发布了question 询问有关 Tkinter 后端的问题,随后忘记了它,但后来我意识到我正在使用 pyqt 后端。有解决办法吗?

原问题:

因此,matplotlib gui 图(a la plt.show())似乎不适应显示器分辨率,并且在高分辨率屏幕上显得很小。是否有 matplotlib+Pyqt 修复或我在 Windows 设置中的某个地方摆弄?

谢谢

【问题讨论】:

【参考方案1】:

在加载应用之前,而不是在加载时。

插入:

if hasattr(QtCore.Qt, 'AA_EnableHighDpiScaling'):
    PyQt5.QtWidgets.QApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling, True)

if hasattr(QtCore.Qt, 'AA_UseHighDpiPixmaps'):
    PyQt5.QtWidgets.QApplication.setAttribute(QtCore.Qt.AA_UseHighDpiPixmaps, True)

像这样:

import PyQt5
from PyQt5 import QtCore, QtGui, uic, QtWidgets
from PyQt5.QtWidgets import QWidget

if hasattr(QtCore.Qt, 'AA_EnableHighDpiScaling'):
    PyQt5.QtWidgets.QApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling, True)

if hasattr(QtCore.Qt, 'AA_UseHighDpiPixmaps'):
    PyQt5.QtWidgets.QApplication.setAttribute(QtCore.Qt.AA_UseHighDpiPixmaps, True)


class MyWindow(PyQt5.QtWidgets.QMainWindow):
    def __init__(self):
        super(MyWindow, self).__init__()

如果这仍然不起作用,在用户 en var 而不是系统 en var 中。

QT_AUTO_SCREEN_SCALE_FACTOR=2 

qt-5/highdpi

【讨论】:

如果我在高 DPI 屏幕上启动我的应用程序,该解决方案可以正常工作。如果我在低 DPI 屏幕上启动应用程序,应用程序窗口大小会更大,并在仅使用鼠标移动应用程序窗口后调整为正确大小。我该如何解决这个问题? ... 我将宽度和高度的 minimumSize 和 maximumSize 设置为相等的值,以获得固定大小的应用程序窗口。如果我将 QtDesigner 中的这些属性重置为默认值,则应用程序窗口的大小会以正确的方式调整。如何阻止用户现在调整应用窗口大小?【参考方案2】:

虽然我对 PyQt 没有太多经验,但在谷歌搜索时,我发现了 this SO 关于将 PyQT 窗口的窗口状态设置为最大化的问题。接受的答案说使用self.showMaximized() 这样做。

【讨论】:

这只是最大化窗口,不改变gui元素/文本等的大小。现在窗口更大了 @Lucidnonsense 也许这可能会有所帮助。 ***.com/questions/406939/…

以上是关于高分辨率屏幕上的 PyQt GUI 大小的主要内容,如果未能解决你的问题,请参考以下文章

Python Tkinter未检测到用于GUI大小调整的正确屏幕分辨率

如何使用 PyQt 根据屏幕分辨率调整主窗口的大小

2K 和更高分辨率设备上的字体大小

PySide2(PyQt5)根据屏幕大小初始化窗口大小

以编程方式更改不同 iPad 屏幕分辨率上的 .xib 大小

如何调整窗体上的控件大小以适应不同的分辨率?