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

Tkinter Python 如何为Treeview表格列绑定点击事件实现删除行功能

实现方案

你需要为Treeview绑定点击事件,识别点击的单元格为删除操作列时执行行删除即可,修改后的完整代码如下:

from tkinter import *
from tkinter import ttk


def doAnything():
    print("Do any thing")

def delete_row(event):
    # 识别点击位置对应的行ID和列ID
    selected_item = tv.identify('item', event.x, event.y)
    selected_col = tv.identify('column', event.x, event.y)
    # 列ID#3对应Badge列,确认点击的是删除操作列且存在选中行
    if selected_col == '#3' and selected_item:
        # 可选校验:确认点击的单元格内容为删除提示,避免误删
        if tv.item(selected_item, 'values')[2] == 'delete this record':
            tv.delete(selected_item)


ws = Tk()
ws.title('Help')

tv = ttk.Treeview(ws)
tv['columns'] = ('Rank', 'Name', 'Badge')
tv.column('#0', width=0, stretch=NO)
tv.column('Rank', anchor=CENTER, width=80)
tv.column('Name', anchor=CENTER, width=80)
tv.column('Badge', anchor=CENTER, width=80)

tv.heading('#0', text='', anchor=CENTER)
tv.heading('Rank', text='Id', anchor=CENTER, command=lambda: doAnything())
tv.heading('Name', text='rank', anchor=CENTER)
tv.heading('Badge', text='Badge', anchor=CENTER)

tv.insert(parent='', index=0, iid=0, text='',
          values=('1', 'Vineet', 'delete this record'))
tv.insert(parent='', index=1, iid=1, text='',
          values=('2', 'Anil', 'delete this record'))
tv.insert(parent='', index=2, iid=2, text='',
          values=('3', 'Vinod', 'delete this record'))
tv.insert(parent='', index=3, iid=3, text='',
          values=('4', 'Vimal', 'delete this record'))
tv.insert(parent='', index=4, iid=4, text='',
          values=('5', 'Manjeet', 'delete this record'))

# 绑定左键点击事件触发删除逻辑
tv.bind('<Button-1>', delete_row)
tv.pack(fill=BOTH, expand=True)


ws.mainloop()

运行代码后,点击任意行的delete this record单元格即可删除对应行。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 07:12:03