Tkinter在更新时删除旧框架

时间:2018-12-17 16:38:06

标签: python tkinter widget frame updates

我尝试了this,而this方法也没有帮助。

我有一些代码可以显示当前的天气和温度,并希望对其进行明显的更新。 我设法进行了更新,但是它在旧框架下面添加了更新的框架。 我似乎找不到消除旧框架并将其替换为更新框架的方法。

这是我的代码的摘录:

def refresh():
    Label(framewet, text=weatherstring + ",   " + temperature + "°",
          bg='black', fg='white', font=("avenir", 35)).pack()
    framewet.pack(side='right', fill='y')
    window.after(3000, refresh) # 3 secs just for debug
    # framewet.destroy() does not work, nor .pack_forget()

# window is the wholw window, may known as root.Tk()


if __name__ == "__main__":
    window.after(0, refresh)
    window.mainloop(0)

谢谢。

1 个答案:

答案 0 :(得分:2)

您可以简单地更新标签来代替破坏框架。这可以通过在init上定义标签,然后在循环上使用config()对其进行更新来完成。

这是您的代码的简单计数器。

from tkinter import *


def refresh():
    global counter, label
    counter += 1
    label.config(text="Counter: {}".format(counter))
    window.after(1000, refresh)

if __name__ == "__main__":
    window = Tk()
    counter = 1
    framewet = Frame()
    framewet.pack(side='right', fill='y')
    label = Label(framewet, text="Counter: {}".format(counter), bg='black', fg='white', font=("avenir", 35))
    label.pack()
    refresh()
    window.mainloop()