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

TreeView筛选后仅展示ID且触发IndexError索引越界如何修复

修复方案

问题根源

筛选处理函数filtracampionati的查询结果处理逻辑存在错误:

  • 代码result=[row[0] for row in cursor]仅提取了每行查询结果的第一个字段(即你看到的ID字段),剩余所有关联字段全部被丢弃
  • 插入TreeView时仅传入1个字段值,所以界面仅显示ID;同时后续点击事件的getData函数尝试访问索引1~9的字段时,自然会触发IndexError: list index out of range错误

代码修改

仅需要调整filtracampionati函数的查询结果处理逻辑,和全量展示函数displayAll的逻辑保持一致即可,修改后的完整代码如下:

def filtracampionati():
    tv.delete(*tv.get_children())
        
    campionati = combo_Campionato.get()
    giornate = combo_Giornate.get()
    cursor.execute('SELECT * FROM ARCHIVIO_Risultati WHERE campionato=? AND giornata=?',(campionati, giornate,))
    # 原错误代码:仅取第一个字段 result=[row[0] for row in cursor]
    # 修改后:取完整行数据,也可以直接写 result = cursor.fetchall() 效果完全一致
    result = [row for row in cursor]

    for row in result:
        tv.insert("", END, values=row)

验证说明

修改后两个问题会同时解决:

  1. 筛选后TreeView会展示所有关联字段,和全量展示时的表现完全一致
  2. 点击TreeView条目时,getData函数可以正常读取到所有索引对应的字段,不会再报索引越界错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 07:48:02