【问题标题】:This loop makes a whole new label each loop... Why?这个循环每次循环都会创建一个全新的标签......为什么?
【发布时间】:2018-05-19 23:14:32
【问题描述】:

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

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

【问题讨论】:

  • 您的代码不会创建任何标签。也许你的意思是进入?
  • 循环在哪里?

标签: python tkinter


【解决方案1】:

因为每次调用task函数时,它都会创建一个新的Entry对象并删除新对象的内容,而不是使用一个全局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)

然后你可以调用这个函数,让它自己调用。

【讨论】:

  • 感谢您的反馈。我大约两周前才开始学习编码。我仍然挂在基础知识上......所以再次感谢。
  • 没问题,如果解决了问题,请随时将答案标记为已接受,或者如果您在我的代码中遇到问题,请寻求更多帮助。
猜你喜欢
  • 1970-01-01
  • 2021-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-22
  • 1970-01-01
相关资源
最近更新 更多