无法删除 Tkinter table 的内容

Contents of a Tkinter table unable to be deleted

我目前正在尝试在每次用户切换帧时刷新的 tkinter 中显示 table。我这样做的方法是在用户切换到另一个框架时删除 table 的所有内容,并在用户使用 [=22= 查看框架时立即添加并再次显示内容] 再次.

正在使用的树是

 def View():
        for row in db_actions.GetAllStudents(): #Method from a database used
            tree.insert("", tk.END, values=row)

    style = ttk.Style()
    style.configure("Treeview.Heading", font = (None, 8))
    style.configure("Treeview", font = (None, 8), rowheight=40)


    tree = ttk.Treeview(StudentView, column=("c1", "c2", "c3", "c4"),
                        show='headings', height=180)

    sidebar = ttk.Scrollbar(StudentView, orient="vertical")
    sidebar.pack(side="right", fill=tk.Y)

    sidebar.config(command=tree.yview)


    tree.column("#1", anchor='center')

    tree.heading("#1", text="First Name")

    tree.column("#2", anchor='center')

    tree.heading("#2", text="Surname")

    tree.column("#3", anchor='center')

    tree.heading("#3", text="Student Number")

    tree.column("#4", anchor='center')

    tree.heading("#4", text="Class")

    tree.pack()

    View()

切换帧时删除数据的子程序

    def SwitchToMenu():
        tree.delete(tree.get_children())
        SwitchFrames(StudentView, MainMenu)

收到错误信息

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\BONK\AppData\Local\Programs\Python\Python39\lib\tkinter\__init__.py", line 1892, in __call__
    return self.func(*args)
  File "C:\Filepath", line 445, in SwitchToMenu
    tree.delete(tree.get_children())
  File "C:\Users\BONK\AppData\Local\Programs\Python\Python39\lib\tkinter\ttk.py", line 1246, in delete
    self.tk.call(self._w, "delete", items)
_tkinter.TclError: Item I001 I002 not found

tree.delete 一次处理一项。您需要:

    for item in tree.get_children():
        tree.delete(item)