Как отобразить время и дату библиотеки RTC DS1302 в окне tkinter с использованием Raspberry Pi

#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()
  

Больше моих примеров с after()