PyQt5中QTableWidget多列填充异常:第二列未填充求助
解决QTableWidget第二列无法填充的问题
问题出在排序功能的启用时机上:你在填充数据之前就调用了setSortingEnabled(True),这会让表格在插入数据时触发排序逻辑,干扰数据的正常插入,导致第二列数据无法显示。
修改后的代码如下:
import sys from PyQt5.QtWidgets import QApplication, QWidget, QTableWidget, QTableWidgetItem, QVBoxLayout from PyQt5.QtCore import Qt class Widget(QWidget): def __init__(self, parent=None): QWidget.__init__(self, parent) self.widget_layout = QVBoxLayout() self.table_widget = QTableWidget(101, 2) self.widget_layout.addWidget(self.table_widget) self.setLayout(self.widget_layout) for num in range(101): item = QTableWidgetItem() item.setData(Qt.EditRole, num) self.table_widget.setItem(num, 0, item) item2 = QTableWidgetItem() item2.setData(Qt.EditRole, num) self.table_widget.setItem(num, 1, item2) # 填充完所有数据后再启用排序 self.table_widget.setSortingEnabled(True) if __name__ == '__main__': app = QApplication(sys.argv) widget = Widget() widget.show() sys.exit(app.exec_())
核心改动是将setSortingEnabled(True)移到数据填充循环之后,先完成所有数据的插入,再开启排序功能,这样就能保证两列数据都正常显示,同时排序功能也能正常工作。
内容的提问来源于stack exchange,提问作者DLW
相关产品推荐
相关产品推荐

