高分辨率屏幕上的 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大小调整的正确屏幕分辨率