for循环不能删除Treeview项(TypeError:必须是str,而不是int)

时间:2018-01-30 20:52:44

标签: python for-loop tkinter

我正在尝试删除Treeview中的每一列。 我使用for循环删除所有内容,但它只给我错误:

TypeError: must be str, not int

我的代码:

from tkinter import *
from tkinter import ttk


class test:

    root = Tk()

    tree = ttk.Treeview(root)
    tree["columns"] = ("A")
    tree.column("#0", width=100)
    tree.heading("#0", text="Values")

    tree.pack()

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

    for x in tree:
        tree.delete(x)

    root.mainloop()

test()

1 个答案:

答案 0 :(得分:1)

您无法使用for x in tree遍历树的子项,您需要使用get_children(parent)方法。它返回项parent的子项列表。所以要清除树,你可以做到

for x in tree.get_children(''):
    tree.delete(x)

因为''是树根的id。

以下是一个例子:

import tkinter as tk
from tkinter import ttk

def clear_tree():
    for x in tree.get_children(''):
        tree.delete(x)

root = tk.Tk()

tree = ttk.Treeview(root)
tree["columns"] = ("A")
tree.column("#0", width=100)
tree.heading("#0", text="Values")
tree.pack()
tree.insert("", 0, text="Hi", values=("1A"))
tree.insert("", 0, text="Hi", values=("0A"))

ttk.Button(root, text='Clear', command=clear_tree).pack()
root.mainloop()