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

如何将QTableWidget中的数据打印到另一个QTableWidget中?

问题原因排查

你遇到的AttributeError: 'NoneType' object has no attribute 'setText'报错来自两个核心问题:

  • Qt的QTableWidgetItem不能直接跨窗口/跨控件复用,你把主窗口表格里的topcu对象直接setItem到结果窗口表格的操作是无效的,会导致结果窗口表格对应位置实际没有有效item,调用item()方法就返回None。
  • 结果窗口表格的第二列你没有先创建QTableWidgetItem就直接调用item()获取对象,返回的也是None。
修复方案

直接替换hesapla方法里最后两段for循环的代码,修改为如下逻辑即可:

# 写入姓名和计算结果到结果窗口表格
for i in range(self.ui.tableWidget.rowCount()):
    # 读取主窗口的球员姓名
    topcu = self.ui.tableWidget.item(i, 0)
    topcu_isim = topcu.text()
    # 新建QTableWidgetItem给结果窗口的姓名列,不能直接复用主窗口的item
    isim_item = QTableWidgetItem(topcu_isim)
    # 结果窗口只读的话可以设置item不可编辑
    isim_item.setFlags(isim_item.flags() & ~Qt.ItemIsEditable)
    self.topsis_sonuc.ui_snc.tableWidget_sonuc.setItem(i, 0, isim_item)

    # 处理计算结果列
    sonuc_degeri = str(round(yakinlik_katsayilari[i], 4))
    sonuc_item = QTableWidgetItem(sonuc_degeri)
    sonuc_item.setFlags(sonuc_item.flags() & ~Qt.ItemIsEditable)
    self.topsis_sonuc.ui_snc.tableWidget_sonuc.setItem(i, 1, sonuc_item)

注意要提前导入Qt的常量:from PyQt5.QtCore import Qt,如果使用的是PyQt6对应调整导入路径即可。

展示控件优化建议

因为你的结果窗口只需要展示数据不需要交互,相比QTableWidget更推荐用QTableView结合QStandardItemModel,逻辑更清晰,渲染性能也更好;如果是非常简单的两列固定展示,用QListWidget加自定义item也可以满足需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 20:09:03