Python 2.x和Tkinter网格文本upd

2024-04-19 20:53:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我想编写一个Python和Tkinter应用程序,上面有一种表。你知道吗

因此,使用Tkinter,我可以创建一个包含一些行和列的“Excel-licke”表。你知道吗

但是现在我想定期更新这些值(每30秒更新一次)。 如果我循环网格,那么程序运行得越慢,运行的时间就越长。 我想,这并不是创建新网格的最佳方式。你知道吗

那么,如何创建一个网格,并且在循环中只更新值呢?你知道吗


Tags: 程序运行应用程序网格tkinter方式时间excel行和列
1条回答
网友
1楼 · 发布于 2024-04-19 20:53:14

你的问题的答案和你写的差不多:创建一次小部件,然后创建一个循环周期性地更新值。你知道吗

举个例子:

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()

相关问题 更多 >