在Tkinter TreeView中删除和编辑项目
Tkinter是一个Python的用户界面(UI)编程模块。其TreeView(树视图)小部件可用于以层次结构呈现数据。本篇文章将讨论如何在Tkinter TreeView中删除和编辑项目。
创建Tkinter TreeView
首先,让我们创建一个基本的Tkinter TreeView。以下代码将创建一个Tkinter窗口,该窗口包含一个带有“Name”和“Age”列的TreeView,以及“Add Item”按钮:
import tkinter as tk
from tkinter import ttk
def add_item():
name = name_entry.get()
age = age_entry.get()
tree.insert("", tk.END, text=name, values=(age))
window = tk.Tk()
window.title("TreeView Example")
tree = ttk.Treeview(window, selectmode='browse', columns=('Name', 'Age'), height=10)
tree.heading('#0', text='Name')
tree.heading('#1', text='Age')
tree.column('#1', stretch=tk.YES)
tree.column('#0', width=150, minwidth=150, stretch=tk.YES)
name_entry = tk.Entry(window, width=30)
name_label = tk.Label(window, text="Name: ")
age_entry = tk.Entry(window, width=30)
age_label = tk.Label(window, text="Age: ")
add_button = tk.Button(window, text="Add Item", command=add_item)
name_label.pack(side=tk.LEFT)
name_entry.pack(side=tk.LEFT)
age_label.pack(side=tk.LEFT)
age_entry.pack(side=tk.LEFT)
add_button.pack(side=tk.LEFT)
tree.pack(expand=True, fill=tk.BOTH)
window.mainloop()
删除项目
要删除Tkinter TreeView中的项目,请使用其delete
方法和项目的id。以下代码将通过select
按钮获取所选项目的id,并将其传递给delete
方法,以便在点击Delete Selected
按钮时删除该项目:
def delete_item():
selection = tree.selection()
for selected in selection:
tree.delete(selected)
delete_button = tk.Button(window, text="Delete Selected", command=delete_item)
delete_button.pack(side=tk.LEFT)
编辑项目
要编辑在Tkinter TreeView中存在的项目,您需要为该项目创建一个编辑框,以便用户可以编辑其中的内容。以下代码将为所选项目的名称添加一个编组框,其中包含用于编辑名称的输入框和“Update Name”按钮:
def edit_item():
selection = tree.selection()
try:
selected = selection[0]
name = tree.item(selected)['text']
edit_window = tk.Toplevel()
edit_window.title("Edit Item")
name_entry = tk.Entry(edit_window, width=30)
name_entry.insert(0, name)
def update_item():
new_name = name_entry.get()
tree.item(selected, text=new_name)
edit_window.destroy()
update_button = tk.Button(edit_window, text="Update Name", command=update_item)
name_entry.pack(side=tk.LEFT)
update_button.pack(side=tk.LEFT)
except IndexError:
pass
edit_button = tk.Button(window, text="Edit Selected", command=edit_item)
edit_button.pack(side=tk.LEFT)
以上代码将在客户端点击“Edit Selected”按钮时调用edit_item
函数。函数将获得所选项目的ID和名称,并将其用于填充一个新的Toplevel
窗口,该窗口显示通过Entry
小部件输入的用户可编辑名称。当用户单击“Update Name”按钮时,update_item
函数将更新在TreeView中选择的名称。
结论
以上是如何在Tkinter TreeView中删除和编辑项目的完整步骤。在这些示例的基础上,您可以轻松扩展Treeview以满足您的应用程序需求。