Динамическое обновление 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()