簡體   English   中英

在 TreeView Tkinter 中刪除和編輯項目

[英]Delete and Edit items in TreeView Tkinter

我想在 Tkinter 的TreeView中刪除一行。

我知道這個方法:

def delButton(self):
    x = main.tree.get_children()
    for item in x:
        main.tree.delete(item)

刪除整棵樹。 但我只想刪除一行。 我怎樣才能做到這一點?

此外,我還想知道如何編輯TreeView行。

您不是刪除整個樹,而是從根項目中刪除所有子項,因為您對迭代中的每個項目都使用了刪除。 您可以使用if語句來確定您想要哪個項目,或者您可以使用selected_item = tree.selection()[0]獲取所選項目並將其刪除。 使用.item()方法,您可以完全訪問要修改的項目。 例子:

from Tkinter import Tk, Button
import ttk


root = Tk()

tree = ttk.Treeview(root)

tree["columns"]=("one","two")
tree.column("one", width=100 )
tree.column("two", width=100)
tree.heading("one", text="coulmn A")
tree.heading("two", text="column B")

tree.insert("" , 0,    text="Line 1", values=("1A","1b"))

id2 = tree.insert("", 1, "dir2", text="Dir 2")
tree.insert(id2, "end", "dir 2", text="sub dir 2", values=("2A","2B"))

##alternatively:
tree.insert("", 3, "dir3", text="Dir 3")
tree.insert("dir3", 3, text=" sub dir 3",values=("3A"," 3B"))

def edit():
    x = tree.get_children()
    for item in x: ## Changing all children from root item
        tree.item(item, text="blub", values=("foo", "bar"))

def delete():
    selected_item = tree.selection()[0] ## get selected item
    tree.delete(selected_item)

tree.pack()
button_del = Button(root, text="del", command=delete)
button_del.pack()
button_del = Button(root, text="edit", command=edit)
button_del.pack()

root.mainloop()

嘗試這樣的事情。

def delete(event):
    print('delete')
    selected_item = tree1.selection()[0]
    values = tuple(tree1.item(selected_item)['values'])
    print(dir(selected_item))
    print(selected_item)
    print(values)
    conn2 = sq.connect('Clients.db')
    c2 = conn2.cursor()
    query = "DELETE FROM clients WHERE name=? AND phone=?"
    c2.execute(query,(*values))
    conn2.commit()
    tree1.delete(selected_item)

我們需要獲取與所選項目關聯的值,這就是tree1.item(selected_item)['values']部分所做的。

由於您沒有提供完整的代碼示例,因此需要進行一些修改,因此我不知道在樹視圖中輸入了哪些值。

    def delete_records(self):
       selection=self.tree.selection()[0] 
       self.tree.delete(selection)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM