Звучит как работа, более подходящая для виджета treeview
.Но если вы хотите вместо этого использовать таблицу меток, один из способов - использовать генератор в сочетании с методом after
:
import tkinter as tk
root = tk.Tk()
data = {i:i for i in range(200)}
def display_data():
row = 0
for k,v in data.items():
tk.Label(root,text=k).grid(row=row,column=0)
tk.Label(root,text=v).grid(row=row,column=1)
row+=1
if not row % 5: #configure this to display the number of rows each second
root.after(1000, fetch)
yield
a = display_data()
def fetch():
try:
next(a)
except StopIteration:
return
root.after(1000, fetch)
root.mainloop()
Или вместо этого вы можете поместить его в treeview
.Обычно мне проще отображать данные, а также есть множество удобных методов, которые позволяют сортировать, экспортировать и т. Д. Я также добавил для справки как вертикальную, так и горизонтальную полосу прокрутки.
from tkinter import ttk
import tkinter as tk
root = tk.Tk()
class TreeFrame(tk.Frame):
def __init__(self,master,**kwargs):
tk.Frame.__init__(self,master,**kwargs)
self.tree = ttk.Treeview(self, selectmode='extended', height=24)
self.tree.grid(row=0,column=0,sticky="nsew")
vsb = ttk.Scrollbar(self, orient="vertical",command=self.tree.yview)
vsb.grid(row=0,column=1,sticky="ns")
hsb = ttk.Scrollbar(self, orient="horizontal",command=self.tree.xview)
hsb.grid(row=1,column=0,sticky="ew")
self.tree.configure(yscrollcommand=vsb.set)
self.tree.configure(xscrollcommand=hsb.set)
header = [i for i in range(70)]
self.tree["columns"] = header
self.tree['show'] = 'headings'
self.start = 0
for i in range(len(header)):
self.tree.column(header[i], width=15, minwidth=27, anchor="w")
self.tree.heading(header[i], text=header[i], anchor='w')
def dummy_data(self):
for i in range(self.start, self.start+20):
current = self.tree.insert("","end",values=[i for _ in range(70)])
self.tree.see(current)
self.start += 20
if self.start >= 270:
return
else:
root.after(1000,self.dummy_data)
tree_frame = TreeFrame(root)
tree_frame.pack()
tk.Button(root,text="Add dummy data",command=tree_frame.dummy_data).pack()
root.mainloop()