#python-2.7 #tkinter
#python-2.7 #tkinter
Вопрос:
Я новичок, у меня есть сомнения. Я использую библиотеку RTC_DS1302 для получения времени компьютера и сохранения его в RTC DS1302 с помощью Raspberry Pi. Мой вопрос заключается в том, как отображать время и дату в окне tkinter и обновлять его каждый раз, когда время и дата меняются, я не смог этого сделать. Я оставляю код, с помощью которого я получаю время и дату. По этой ссылке вы можете найти библиотеку.
https://github.com/ksaye/IoTDemonstrations/blob/master/RTC_DS1302/RTC_DS1302.py
Это код
import RTC_DS1302
import os
import time
ThisRTC = RTC_DS1302.RTC_DS1302()
Data = ThisRTC.ReadRAM()
print("Message: " Data)
DateTime = { "Year":0, "Month":0, "Day":0, "DayOfWeek":0, "Hour":0, "Minute":0, "Second":0 }
Data = ThisRTC.ReadDateTime(DateTime)
print("Date/Time: " Data)
print("Year: " format(DateTime["Year"] 2000, "04d"))
print("Month: " format(DateTime["Month"], "02d"))
print("Day: " format(DateTime["Day"], "02d"))
print("DayOfWeek: " ThisRTC.DOW[DateTime["DayOfWeek"]])
print("Hour: " format(DateTime["Hour"], "02d"))
print("Minute: " format(DateTime["Minute"], "02d"))
print("Second: " format(DateTime["Second"], "02d"))
ThisRTC.CloseGPIO()
Ответ №1:
tkinter
имеет функцию after(time_in_ms, function_name)
, которая позволяет запускать функцию с задержкой. В этой функции вы можете обновить текст в Labels
и выполнить after(time_in_ms, function_name)
, чтобы через некоторое время была запущена та же функция.
Пример, который используется after()
для отображения текущего времени
import tkinter as tk # Python 3.x
from datetime import datetime
def update_time():
# update displayed time
current_time = datetime.now()
current_time_str = current_time.strftime('%Y.%m.%d %H:%M:%S')
label['text'] = current_time_str
# run update_time again after 1000ms (1s)
root.after(1000, update_time)
# --- main ---
root = tk.Tk()
label = tk.Label(root)
label.pack()
update_time()
root.mainloop()