我是Qt和PyQt的初学者,正在尝试创建表。
我正在如下创建表格:
table = QTableWidget(4, 5)
table.setHorizontalHeaderLabels(tableHeaders)
table.setSizeAdjustPolicy(QAbstractScrollArea.AdjustToContents)
self.updateTable(table, self.tracks)
table.setFixedHeight(TABLE_FIXED_HEIGHT)
经常调用updateTable函数来更新表内容。
def updateTable(self, table, tracks):
table.clearContents()
table.setRowCount(len(tracks))
for x, track in enumerate(tracks):
for y, cell in enumerate(track):
item = QTableWidgetItem(cell)
item.setFlags(Qt.ItemIsEnabled)
table.setItem(x, y, item)
table.resizeColumnsToContents()
for col in range(table.columnCount()):
if table.columnWidth(col) > TABLE_MAXIMUM_COLUMN_WIDTH:
table.setColumnWidth(col, TABLE_MAXIMUM_COLUMN_WIDTH)
这会创建一个很好的表,但是表的宽度不能适应其内容,因此该表太小而无法显示所有列。
当表中没有任何内容时,表似乎会开始调整以适应这些列:
但是当填充表格时,宽度不会调整大小。
我不在乎高度是固定的。
有帮助吗?
编辑-这是表格所在的布局
titleHBox = QHBoxLayout()
titleHBox.addStretch(1)
titleHBox.addWidget(titleLabel)
titleHBox.addStretch(1)
upperHBox = QHBoxLayout()
upperHBox.addStretch(1)
upperHBox.addLayout(leftVBox)
upperHBox.addWidget(table) # <-
upperHBox.addLayout(rightVBox)
upperHBox.addStretch(1)
lowerHBox = QHBoxLayout()
lowerHBox.addStretch(1)
lowerHBox.addWidget(loadButton)
lowerHBox.addWidget(saveButton)
lowerHBox.addWidget(spotifyFetchButton)
lowerHBox.addWidget(youtubeFetchButton)
lowerHBox.addWidget(removeButton)
lowerHBox.addStretch(1)
mainVBox = QVBoxLayout()
mainVBox.addLayout(titleHBox)
mainVBox.addLayout(upperHBox)
mainVBox.addLayout(lowerHBox)
self.setLayout(mainVBox)
self.setWindowTitle("Music Converter")
self.show()
编辑2-完整代码,已编辑为独立运行https://pastebin.com/X3t1GSfS