我想编写一个Python和Tkinter应用程序,上面有一种表格。
因此,使用Tkinter,我能够创建一个包含行和列的“Excel-licke”表。
但是现在我想定期更新值(每30秒一次)。 如果我循环网格,那么程序变慢,运行的时间越长。 我想,这不是创建新网格的最好方法。
那么如何制作网格并且只在循环中更新值?
答案 0 :(得分:0)
你的问题的答案几乎就是你写的:创建一次小部件,然后创建一个循环来定期更新值。
以下是一个例子:
import Tkinter as tk
import random
class Table(tk.Frame):
def __init__(self, parent, rows=10, columns=10):
tk.Frame.__init__(self, parent)
self.rows = rows
self.columns = columns
self.widgets = []
for r in range(rows):
row = []
self.widgets.append(row)
for c in range(columns):
cell = tk.Label(self)
cell.grid(row=r, column=c, sticky="nsew")
row.append(cell)
for r in range(rows):
self.grid_rowconfigure(r, weight=1)
for c in range(columns):
self.grid_columnconfigure(c, weight=1)
self.refresh()
def refresh(self):
for r in range(self.rows):
for c in range(self.columns):
self.widgets[r][c].configure(text=random.randint(0,99))
# call this function again in 5 seconds
self.after(5000, self.refresh)
root = tk.Tk()
Table(root).pack(fill="both", expand=True)
root.mainloop()