Python 如何自动展开QTableWidget?

Python 如何自动展开QTableWidget?,python,pyqt,pyqt5,expand,qvboxlayout,Python,Pyqt,Pyqt5,Expand,Qvboxlayout,我对qmdusbwindow中的PyQt5和小部件的大小有一个问题:小部件,一个QTableWidget,应该占据窗口的所有宽度,但它只保持在中间,具有固定的宽度 下面是一些代码: class ProductDatasheetWindow(QMdiSubWindow): def __init__(self, product): super().__init__() self.product = product self.setWindowT

我对qmdusbwindow中的PyQt5和小部件的大小有一个问题:小部件,一个QTableWidget,应该占据窗口的所有宽度,但它只保持在中间,具有固定的宽度

下面是一些代码:

class ProductDatasheetWindow(QMdiSubWindow):
    def __init__(self, product):
        super().__init__()
        self.product = product
        self.setWindowTitle("Liste produit")
        main_layout = QVBoxLayout(self)
        main_widget = QGroupBox()
        main_widget.setLayout(main_layout)
        main_widget.setSizePolicy(QSizePolicy.Maximum,QSizePolicy.Preferred)
        self.setWidget(main_widget)
VBoxLayout包含一些信息(一些QLabel)和底部的QTableWidget:

...table_attributs_valeurs = QTableWidget(len(product.attributes), 2,self)...
下面是我在构造函数中添加的一些代码:

table_attributs_valeurs.setContentsMargins(0, 0, 0, 0)
main_layout.setContentsMargins(0,0,0,0)
main_layout.addWidget(table_attributs_valeurs, 0, Qt.AlignJustify)
table_attributs_valeurs.setSizePolicy(QSizePolicy.Maximum,QSizePolicy.Preferred)

这是我的一个小例子,写下它帮助我理解了Qt,并且它是有效的:

from PyQt5.QtWidgets import QMdiSubWindow, QApplication, QVBoxLayout, QLabel, QWidget, QTableWidget, QTableWidgetItem
import sys


class Win(QMdiSubWindow):
    def __init__(self):
        QMdiSubWindow.__init__(self)
        self.setMinimumSize(300,200)
        main_widget=QWidget()
        layout=QVBoxLayout(main_widget)
        layout.addWidget(QLabel("numéro 1",self),0, Qt.AlignCenter)
        layout.addWidget(QLabel("numéro 2",self), 0, Qt.AlignCenter)
        main_widget.setLayout(layout)
        self.setWidget(main_widget)

        table=QTableWidget(3,2,self)
        att_title=QTableWidgetItem("Attribut")
        att_title.setTextAlignment(Qt.AlignCenter)
        table.setHorizontalHeaderItem(0, att_title)
        att_value=QTableWidgetItem("Valeur")
        table.setHorizontalHeaderItem(1, att_value)
        table.verticalHeader().setVisible(False)
        header=table.horizontalHeader()
        header.setSectionResizeMode(0,QtWidgets.QHeaderView.Stretch)
        header.setSectionResizeMode(1,QtWidgets.QHeaderView.Stretch)

        for row in range(3):
            for col in range(2):
                item=QTableWidgetItem("row {}, col {}".format(str(row),str(col)))
                item.setTextAlignment(Qt.AlignCenter)
                table.setItem(row,col,item)
        layout.addWidget(table)
        # layout.addStretch()




if __name__=="__main__":
    app = QApplication(sys.argv)
    win=Win()
    win.show()
    app.exec_()

就像通常一样,写一个简单的例子就能解决问题!我会写我的答案。