表格宽度未调整大小(pyqt5)

时间:2018-07-12 14:27:31

标签: python qt pyqt

我是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)

这会创建一个很好的表,但是表的宽度不能适应其内容,因此该表太小而无法显示所有列。

当表中没有任何内容时,表似乎会开始调整以适应这些列:

Table without data - width correct

但是当填充表格时,宽度不会调整大小。

Table with data - width not updated and incorrect

我不在乎高度是固定的。

有帮助吗?

编辑-这是表格所在的布局

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

0 个答案:

没有答案