这个循环为每个循环创建一个全新的标签......为什么?

时间:2018-05-19 23:14:33

标签: python tkinter

每次循环时,它都会创建一个全新的标签,而不仅仅是刷新。

from tkinter import *
import psutil

def task():
   e = Entry(root)
   e.pack()

   e.delete(0, END)
   e.insert(0,psutil.cpu_percent(interval=None))
   s = e.get()
   root.after(500, task)  # reschedule event in .5 seconds


root = Tk()
root.after(500, task)
root.mainloop()

1 个答案:

答案 0 :(得分:1)

因为每次调用task函数时,它都会创建一个新的Entry对象并删除新对象的内容,而不是使用一个全局条目。

首先创建条目:

root = Tk()
e = Entry(root)
e.pack()

然后确保您的任务功能正在使用唯一的全局条目e而不创建任何新条目:

def task():
    e.delete(0, END)
    e.insert(0, psutil.cpu_percent(interval=None))
    root.after(500, task)

然后你可以调用该函数并让它自己调用。