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

问题描述 投票:0回答:4

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

原问题:

所以看来 matplotlib gui 图(la plt.show())不适应显示器分辨率,并且在高分辨率屏幕上显得很小。是否有 matplotlib+Pyqt 修复,或者我是否在 Windows 设置中的某个地方进行了修改?

谢谢

Example

python qt user-interface matplotlib pyqt
4个回答
19
投票

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

插入:

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/高dpi


1
投票

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

self.showMaximized()
来做到这一点。


0
投票

对于Python,这对我有用:

if hasattr(Qt, 'AA_EnableHighDpiScaling'):
    QApplication.setAttribute(Qt.AA_EnableHighDpiScaling, True)
if hasattr(Qt, 'AA_UseHighDpiPixmaps'):
    QApplication.setAttribute(Qt.AA_UseHighDpiPixmaps, True)
if __name__ == '__main__':
    app = QApplication(sys.argv)
    print(f"Using AA_EnableHighDpiScaling > {QApplication.testAttribute(Qt.AA_EnableHighDpiScaling)}")
    print(f"Using AA_UseHighDpiPixmaps    > {QApplication.testAttribute(Qt.AA_UseHighDpiPixmaps)}")
    # your window here
    app.exec()

基于这个答案: https://stackoverflow.com/a/56140241/9525238


0
投票

要扩展整个应用程序,请添加以下行:

import os
os.environ["QT_SCALE_FACTOR"] = "1.2"  # Set scale to 120%
© www.soinside.com 2019 - 2024. All rights reserved.