Я уже несколько месяцев обучаю себя Python и приступил к изучению некоторых методов графического интерфейса.
Я написал этот простой скрипт на основе примера pack_remove, который нашел в книге. Мой скрипт просто отображает местное и UTC время каждую секунду. Разумеется, разница только в часе, и я все еще хотел бы переотображать каждую секунду.
Скрипт работает, но моя оперативная память постоянно увеличивается с каждым разом. Я начинаю с около 4 МБ, а затем через 2 часа или около того сценарий использует 25 МБ. Это имеет некоторый смысл для меня, но мне было любопытно, если бы был способ отображать новые времена каждую секунду, но уменьшить использование памяти такого простого дисплея часов.
Или я использую неэффективную технику для отображения данных в графическом интерфейсе с высокой частотой?
Вот мой код:
from tkinter import *
import time
class TimeDisplay(Frame):
def __init__(self,msecs = 1000):
Frame.__init__(self)
self.msecs = msecs
self.pack()
utc_time = Label(self, text='')
utc_time.pack()
cst_time = Label(self, text='')
cst_time.pack()
self.utc_time = utc_time
self.cst_time = cst_time
self.repeater()
def repeater(self):
self.utc_time.pack_forget()
self.cst_time.pack_forget()
self.utc_time = Label(self, text= 'UTC: ' + time.strftime('%Y/%m/%d %H:%M:%S',time.gmtime()))
self.utc_time.pack()
self.utc_time.config(bg='navy',fg='white')
self.cst_time = Label(self, text= 'CST: ' + time.strftime('%Y/%m/%d %H:%M:%S',time.localtime()))
self.cst_time.pack()
self.cst_time.config(bg='navy',fg='white')
self.after(self.msecs, self.repeater)
if __name__ == '__main__': TimeDisplay(msecs=1000).mainloop()
Заранее спасибо