相关疑难解决方法(0)

如何在Qt中维护小部件的宽高比?

如何在Qt中维护窗口小部件的宽高比以及如何使窗口小部件居中呢?

user-interface qt widget aspect-ratio

32
推荐指数
4
解决办法
3万
查看次数

PyQt 保持纵横比固定

我正在研究 PyQt5 GUI,到目前为止,我只是有使用 python 脚本的经验,并没有深入研究创建用户界面。

GUI 必须用于不同的屏幕(可能还有一些旧的 4:3 比例屏幕),并且需要在不同尺寸下看起来不错。现在,我让我的生活更轻松的方法是强制执行窗口的固定纵横比并根据窗口大小调整不同元素的大小。

from PyQt5 import QtCore, QtGui, QtWidgets

class MainWindow(QtWidgets.QMainWindow):
    def __init__(self, parent= None):
        super().__init__(parent)
        self.form_widget = FormWidget(self)
        self.setCentralWidget(self.form_widget)
        self.resize(200, 400)
        self.sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
        self.sizePolicy.setHeightForWidth(True)
        self.setSizePolicy(self.sizePolicy)

    def heightForWidth(self, width):
        return width * 2

class FormWidget(QtWidgets.QWidget):

    def __init__(self, parent):
        super().__init__(parent)

    def resizeEvent(self, event):
        f = self.font()
        temp = event.size().height()
        f.setPixelSize(temp / 16)
        self.setFont(f)

        return super().resizeEvent(event)


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)

    w = MainWindow()
    w.show()
    sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

根据窗口大小调整元素大小工作正常,但根本不保留窗口纵横比。我heightForWidth从旧的 PyQt4 …

python pyqt aspect-ratio python-3.x pyqt5

8
推荐指数
1
解决办法
1209
查看次数

标签 统计

aspect-ratio ×2

pyqt ×1

pyqt5 ×1

python ×1

python-3.x ×1

qt ×1

user-interface ×1

widget ×1