Tkinter 在更新时删除旧框架
Tkinter removing old Frame when updated
我试过this, and 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)
谢谢。
您无需破坏框架,只需更新标签即可。这可以通过在 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()
我试过this, and 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)
谢谢。
您无需破坏框架,只需更新标签即可。这可以通过在 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()