如何将子版面添加到父版面?

2024-06-25 23:04:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把两个小部件组合在一个QGridLayout中,这样我就可以在父布局中同时移动这两个小部件,我知道addLayout可以工作,但是我找不到具有该名称的类,而是找到了addChildLayout和{},但我不知道如何使它们工作!在

下面是我测试的代码:

#!/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


Tags: textimportselfsysparentprogresslayouttext1
1条回答
网友
1楼 · 发布于 2024-06-25 23:04:04

我相信您要做的是在调用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)

如果行得通请告诉我。在

相关问题 更多 >