无法在QVBoxLayout中对齐顶部的QTableWidget

时间:2019-06-26 07:08:16

标签: python pyqt5 pyside2

我想在顶部的QVBoxLayout中对齐QLabel和QTableWidget。

我可以通过使用setAlignment方法将QLabel顶部对齐到QVBoxLayout上。将QTableWidget添加到QVBoxLayout时,出现了问题。

我的代码:

class AWidget(QWidget):

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

        self.aLabel = QLabel('Table')

        self.aTable = QTableWidget(6, 6)
        self.aTable.setMaximumHeight(200)

        self.aLayout = QVBoxLayout()
        self.aLayout.addWidget(self.aLabel)
        self.aLayout.addWidget(self.aTable)
        self.aLayout.setAlignment(Qt.AlignTop)
        self.setLayout(self.aLayout)

app = QApplication([])

aWidget = AWidget()
aWidget.resize(640, 480)
aWidget.show()

sys.exit(app.exec_())

QLabel必须位于主窗口小部件的顶部,然后是其下方的QTableWidget。但是,QLabel和QTableWidget都始终停留在主窗口小部件的中心,在它们之间留有很多空间。

1 个答案:

答案 0 :(得分:0)

您已将表格的最大高度固定为200像素,布局正在通过占用尽可能多的空间来处理它。

要保持此高度,可以在布局的末尾插入 stretch

class AWidget(QWidget):

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

        self.aLabel = QLabel('Table')

        self.aTable = QTableWidget(6, 6)
        self.aTable.setMaximumHeight(200)

        self.aLayout = QVBoxLayout()
        self.aLayout.setAlignment(Qt.AlignTop)
        self.aLayout.addWidget(self.aLabel)
        self.aLayout.addWidget(self.aTable)
        self.aLayout.addStretch() # Adding a stretch to occupy the empty space
        self.setLayout(self.aLayout)