Python 如何自动展开QTableWidget?
我对qmdusbwindow中的PyQt5和小部件的大小有一个问题:小部件,一个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
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_()
就像通常一样,写一个简单的例子就能解决问题!我会写我的答案。