Динамическое обновление Treeview

Прошу помощи. Есть Treeview, который заполняется из файла (файл постоянно обновляется примерно раз в минуту). Разово все заполняется и все ОК. Необходимо реализовать Цикл, чтоб постоянно не щелкать кнопку Обновить. При работе цикла (видно при печати Print)Treeview просто исчезает, а необходимо чтоб он обновлялся.

кусочек кода:

import csv
import time
import tkinter as tk
import tkinter.ttk as ttk
from tkinter import *

class Main(tk.Frame): #Главное окно
 def __init__(self, root):
    super().__init__(root)                
    self.init_main()        

 def init_main(self):        
    root.withdraw()
    load()

class load(tk.Toplevel): # Главное окно участников 
 def __init__(self):
    super().__init__(root)        
    self.title("Сетка участников")        
    height = 550
    width = 1000
    x = (self.winfo_screenwidth()//2)-(width//2)
    y = (self.winfo_screenheight()//2)-(height//2)
    self.geometry('{}x{}+{}+{}'.format(width, height, x, y))
    style = ttk.Style()
    style.configure("Treeview.Heading", font=(None, 10))
    toolbar = tk.Frame(self, bg='#d8d9e9', bd=0)
    toolbar.pack(side=tk.TOP, fill=tk.X)   
    
    btn_cancel = ttk.Button(toolbar, text="Закрыть", command=lambda: self.end(), compound=tk.TOP)        
    btn_cancel.pack(side=tk.RIGHT)
    btn_reload = ttk.Button(toolbar, text="Обновить участников", command=lambda: self.reload(), compound=tk.TOP)
    btn_reload.pack(side=tk.LEFT)
    self.grab_set()        
    self.focus_set()
    sb = ttk.Scrollbar(self, orient=tk.VERTICAL)
    sb.pack(side=tk.RIGHT, fill=tk.Y)

    self.tree = ttk.Treeview(self, columns=("loss", "winner", "time_p", "time_v", "tatami"), height=30, show="headings", yscrollcommand=sb.set)                
    self.tree.column("loss", width=300, anchor=tk.W)
    self.tree.column("winner", width=300, anchor=tk.W)
    self.tree.column("time_p", width=120, anchor=tk.CENTER)
    self.tree.column("time_v", width=120, anchor=tk.CENTER)
    self.tree.column("tatami", width=120, anchor=tk.CENTER)
    self.tree.heading("loss", text="Проиграл")
    self.tree.heading("winner", text="Победитель")
    self.tree.heading("time_p", text="Время поединка")
    self.tree.heading("time_v", text="Время системное")
    self.tree.heading("tatami", text="№ Татами")
    
    with open("\\log.csv", newline="", encoding='utf-8') as f:                        
        for Ushatniki in csv.reader(f):
            self.tree.insert("", tk.END, values=Ushatniki)                

    self.tree.bind("TreeviewSelect")        
    self.tree.pack(fill=tk.BOTH, expand=True)        
    self.Treeview = self.tree
    sb.configure(command = self.Treeview.yview)
    
    #self.reload_while()
    

def end(self):        
    self.destroy()
    root.destroy()

def reload(self): 
    with open("\\log.csv", newline="", encoding='utf-8') as f:                        
        for Ushatniki in csv.reader(f):
            self.tree.insert("", tk.END, values=Ushatniki)                

def reload_while(self):        
    while True:
        time.sleep(60)
        print(1)
        
        with open("\\log.csv", newline="", encoding='utf-8') as f:                        
            for Ushatniki in csv.reader(f):
                self.tree.insert("", tk.END, values=Ushatniki)

if __name__ == "__main__":
    root = tk.Tk()
    app = Main(root)
    app.pack(side=tk.TOP, fill=tk.X)
    root.mainloop()

Ответы (0 шт):