如何将子布局添加到父布局?

时间:2017-05-14 21:20:58

标签: python python-3.x pyqt5

我想在QGridLayout中对两个小部件进行分组,这样我就可以同时将它们作为父布局中的一个小部件移动,我已经红了addLayout可以工作但是我找不到具有该名称的课程,而是找到addChildLayoutaddChildWidget,但我不知道如何让它们发挥作用!

这是我测试的代码:

#!/usr/bin/env python3.5.2

from PyQt5.QtWidgets import*
from PyQt5.QtCore import*
import sys

class ClassName(QDialog):
    def __init__(self):
        QDialog.__init__(self)

        parent_layout = QGridLayout()

        self.text1 = QLineEdit()
        self.text2 = QLineEdit()
        # I want to make Button1, text3 and progress widgets in one line
        # I want Button1, text3 in a child_layout
        Button1 = QPushButton("Button1")
        self.text3 = QLineEdit()
        self.progress = QProgressBar()


        self.text1.setPlaceholderText("text 1")
        self.text1.setFixedWidth(524)

        self.text2.setPlaceholderText("text 2")
        self.text2.setFixedWidth(85)

        self.progress.setValue(0)
        self.progress.setAlignment(Qt.AlignHCenter)

        Button1.setFixedWidth(125)

        self.text3.setReadOnly(True)
        self.text3.setPlaceholderText("text 3")

        parent_layout.addWidget(self.text1, 0, 0)
        parent_layout.addWidget(self.text2, 0, 1)
        parent_layout.addWidget(self.progress, 1, 1)
        parent_layout.addWidget(Button1, 1, 0)
        parent_layout.addWidget(self.text3, 2, 0)

        self.setLayout(parent_layout)

app = QApplication(sys.argv)
dialog = ClassName()
dialog.show()
sys.exit(app.exec_())

结果:

enter image description here

我想要的是什么:

enter image description here

1 个答案:

答案 0 :(得分:0)

我相信你想要做的是在你致电addWidget()时设置columnspan参数。例如,从您的图像看,text1应该跨越网格的两列。如果您查看qt docs,您将看到addWidget已重载并且可以接受参数rowSpan和columnSpan。使用该信息,您应该能够像这样填充您的窗口。

parent_layout.addWidget(self.text1, 0, 0, 1, 2)
parent_layout.addWidget(self.text2, 0, 1)
parent_layout.addWidget(Button1, 1, 0)
parent_layout.addWidget(self.text3, 1, 1)
parent_layout.addWidget(self.progress, 1, 2)

如果有问题,请告诉我。