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
相关产品推荐
相关产品推荐

