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

追加数据后,如何在同函数内生成新DataFrame并重新填充Treeview?

解决Treeview刷新后显示旧DataFrame的问题

你的问题根源很明确:追加行到谷歌表格后,没有重新拉取最新数据生成新的DataFrame,而是直接复用了之前的旧数据列表,所以Treeview显示的还是原来的内容。完全可以在追加行的同一函数里生成新的DataFrame,只要在清空Treeview后,重新从表格加载最新数据并处理即可。

修改后的代码示例

# 初始化SpreadsheetInfo实例(如果是首次执行)
self.si = spi.SpreadsheetInfo()
self.user = user

# 追加行到谷歌表格
self.si.range3.append_row(self.new_date, table_range='A3:N3')

# 清空Treeview
self.session_tree.delete(*self.session_tree.get_children())

# 关键:重新拉取最新数据生成新的DataFrame和行列表
self.sess_m = self.si.sessions  # 获取表格最新数据
self.sess_loc = self.sess_m.loc[self.sess_m['Provider'] == self.user]
self.sess_rows = self.sess_loc.tail(100)
self.session_rows = self.sess_rows.to_numpy().tolist()

# 用最新数据填充Treeview
for row in self.session_rows:  # 注意原代码中self.sd.session_rows应为笔误,替换为当前最新的列表
    self.session_tree.insert("","end",values=row)

核心修改说明

  • 追加行后必须重新调用self.si.sessions,因为原self.sess_m是追加前的旧DataFrame,无法自动同步表格更新
  • 重复执行筛选、截取最新100行、转列表的流程,确保self.session_rows是表格最新数据
  • 填充Treeview时使用刚生成的新数据列表,而非之前的旧数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 01:15:06