云计算百科
云计算领域专业知识百科平台

干货:表格实时回填

表格实时回填:set_result 如何驱动结果预览

目标:结果一回来,表格立刻刷出来

引擎识别完,主线程收到结果,要把"批号 + 元素 + 值"这类结构化数据实时填进右侧结果预览表。

核心就是 set_result:把 dict 数据逐行塞进 QTableWidget。

代码

def set_result(self, result, batch_count, element_count):
# result: {"批号": {"元素": 值}}
self._result = result # 先留着,之后导出要用
self.table.clearContents()
self.table.setRowCount(0)
for batch, elements in result.items():
for element, value in elements.items():
r = self.table.rowCount()
self.table.insertRow(r)
self.table.setItem(r, 0, QTableWidgetItem(str(batch)))
self.table.setItem(r, 1, QTableWidgetItem(element))
self.table.setItem(r, 2, QTableWidgetItem(str(value)))

self.summary.setText(f"共 {batch_count} 个批号,{element_count} 个元素")

关键点

  • 先清空再填充,避免旧数据残留。
  • 行数动态:insertRow 按数据量增长,不预设死表。
  • 保留 self._result:导出、回传要靠它,不能只在表格里呆着(这是一个踩过的坑)。
  • 滚动:数据多时 scrollToBottom() 让用户看到最新。
  • 第一性原理:表格是视图,_result 才是数据源

    QTableWidget 只是展示。真正要用的数据得存一份在内存(self._result),表格每次重新渲染。别指望从表格控件里读数据,那样又慢又脆。

    谁调用它

    主线程 _handle_result 收到引擎结果,就调 direct_page.set_result(…) 把数据喂给表格视图。表格只是最后一个落点。

    一句话:数据存在模型里,表格只是刷新出来给看。set_result 就是"把模型数据渲染成表格视图"的那个口子。


    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 干货:表格实时回填
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!