You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 00:30:21