Ткинтер удаляет старый фрейм при обновлении - PullRequest
0 голосов
/ 17 декабря 2018

Я пытался это , и этот метод тоже не помог.

У меня есть немного кода, который показывает текущую погоду и температуру, и хочу егоочевидно обновить.Мне удается сделать обновление, но он добавляет обновленный кадр под старым.Кажется, я не могу найти способ удалить старую рамку и заменить ее обновленной.

Вот выдержка из моего кода:

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 голосов
/ 17 декабря 2018

Вместо того, чтобы разрушать ваш кадр, вы можете просто обновить метку.Это можно сделать, определив метку в 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()
...