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

Tkinter报错:Item 1 1未找到,数据库布尔值渲染复选图标失败

问题解决:Tkinter Treeview显示数据库布尔值图标异常及报错处理

错误原因分析

  • 报错根源:代码里trv.focus(i)完全错误,focus()接收的是Treeview已存在的item ID,你传入的却是数据库返回的元组i,自然找不到对应item,触发_tkinter.TclError: Item 1 1 not found。
  • 逻辑错误:还没把数据库数据插入Treeview,就去获取Treeview的item信息,属于顺序颠倒;判断勾选状态时,错误去取Treeview item的值,应该直接用数据库查询结果里的selection字段。

修正后的代码

def employee():
    global email_field, checkfield

    conn = sqlite3.connect('schoonschip.db')
    cursorr = conn.cursor()
    cursorr.execute("SELECT email, rowid, selection FROM employee ")
    employe = cursorr.fetchall()

    trv.delete(*trv.get_children())

    for emp in employe:
        # 直接取数据库返回的selection字段值(索引2,对应查询顺序里的第三个字段)
        if emp[2] == 1:
            trv.insert('', 'end', values=emp, tags='check')
        else:
            trv.insert('', 'end', values=emp, tags='uncheck')

    conn.commit()
    conn.close()

employee()

关键修改点

  • 删除错误的trv.item(trv.focus(i))相关代码,直接用数据库查询结果判断状态
  • 用emp[2]直接获取selection字段值,避免无意义的Treeview item操作
  • 将变量名i改为emp,提升代码可读性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 20:48:22