首页 > 解决方案 > 如何让 QHBoxLayout 有固定的比例?

问题描述

就像下图一样,我有一个 QHBoxLayout。在这 2 个 QVBoxLayout 中,我向两者添加了一系列小部件。但我希望 QHBoxLayout 的拆分完全在中间。每边内的一些小部件都有扩展选项,但我不希望 QHBoxLayout 允许任何边跨越整个窗口大小的一半以上。

这可能吗?我怎样才能做到这一点?

在此处输入图像描述

标签: pythonqtlayoutpyside2

解决方案


一种可能的解决方案是在添加 QVBoxLayout 时设置相同的拉伸因子:

from PyQt5 import QtCore, QtGui, QtWidgets


class Widget(QtWidgets.QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)

        hlay = QtWidgets.QHBoxLayout(self)

        left_vlay = QtWidgets.QVBoxLayout()
        right_vlay = QtWidgets.QVBoxLayout()

        hlay.addLayout(left_vlay, stretch=1)
        hlay.addLayout(right_vlay, stretch=1)

        left_vlay.addWidget(QtWidgets.QTextEdit())
        right_vlay.addWidget(QtWidgets.QLineEdit())

if __name__ == "__main__":
    import sys

    app = QtWidgets.QApplication(sys.argv)
    w = Widget()
    w.show()
    sys.exit(app.exec_())

推荐阅读