Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 删除和编辑TreeView Tkinter中的项目_Python_Tkinter - Fatal编程技术网

Python 删除和编辑TreeView Tkinter中的项目

Python 删除和编辑TreeView Tkinter中的项目,python,tkinter,Python,Tkinter,我想删除Tkinter中TreeView中的一行 我知道这种方法: def delButton(self): x = main.tree.get_children() for item in x: main.tree.delete(item) 删除整个树。但我只想删除一行。我该怎么做 此外,我还想知道如何编辑TreeView行。您并不是在删除整个树,而是在删除根项中的所有子项,因为您在迭代中对每个项都使用delete。 您可以使用if语句来确定所需的项目,也可以

我想删除Tkinter中
TreeView
中的一行

我知道这种方法:

def delButton(self):
    x = main.tree.get_children()
    for item in x:
        main.tree.delete(item)
删除整个树。但我只想删除一行。我该怎么做


此外,我还想知道如何编辑
TreeView
行。

您并不是在删除整个树,而是在删除根项中的所有子项,因为您在迭代中对每个项都使用delete。 您可以使用
if
语句来确定所需的项目,也可以使用
selected\u 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)