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

PySide6 QTableWidget无法填充数据技术求助

问题排查:QTableWidget数据不显示的原因及修复

核心问题:未设置表格行数

你仅为tblData设置了列数,但QTableWidget默认行数为0,尝试给索引1的行设置内容时,该行根本不存在,导致数据无法渲染显示。

修复步骤:

1. 先指定表格行数

在初始化表格时,先调用setRowCount()设置需要的行数,比如要添加1行测试数据,就设置:

self.tblData.setRowCount(1)

2. 修正表头与数据索引

  • 你之前重复给索引0的表头设置内容,属于冗余操作,直接用setHorizontalHeaderLabels即可一次性设置所有表头;
  • QTableWidget的行/列索引从0开始,若要使用第1行(索引1),需将行数设为至少2,否则该行不存在。

修正后的表格初始化代码:

# Initialise Data Table
self.tblData.setColumnCount(5)
# 一次性设置表头,替代之前重复的setHorizontalHeaderItem操作
self.tblData.setHorizontalHeaderLabels(['MailCentre', 'SummaryFormat', 'YearWeek', 'Actuals', 'Forecast'])
# 设置表格行数(示例设为1,对应索引0的行)
self.tblData.setRowCount(1)
# 给索引0的行填充数据
self.tblData.setItem(0, 0, QTableWidgetItem("aMC"))
self.tblData.setItem(0, 1, QTableWidgetItem("aMC"))
self.tblData.setItem(0, 2, QTableWidgetItem("aMC"))
self.tblData.setItem(0, 3, QTableWidgetItem("aMC"))
self.tblData.setItem(0, 4, QTableWidgetItem("aMC"))

3. 移除不必要的repaint()调用

QTableWidget在数据更新后会自动触发界面刷新,手动调用repaint()是多余的,可直接删除。

额外建议:

  • 避免同时混用PySide6和tkinter(你导入了tkinter的组件),两个GUI框架在同一应用中混用可能引发冲突或异常;
  • 后续从数据库加载数据时,可根据DataFrame的行数动态设置表格行数,例如:self.tblData.setRowCount(len(df))。

内容的提问来源于stack exchange,提问作者Carl Rostron

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 09:15:23