4 ответов:
корневые окна Tkinter имеют метод под названием
afterкоторый может быть использован для планирования функции, которая будет вызвана после заданного периода времени. Если эта функция сама вызываетafterнастройки автоматически повторяющееся событие.вот пример:
# for python 3.x use 'tkinter' rather than 'Tkinter' import Tkinter as tk import time class App(): def __init__(self): self.root = tk.Tk() self.label = tk.Label(text="") self.label.pack() self.update_clock() self.root.mainloop() def update_clock(self): now = time.strftime("%H:%M:%S") self.label.configure(text=now) self.root.after(1000, self.update_clock) app=App()имейте в виду, что
afterне гарантирует, что функция будет выполняться точно в срок. Это только расписание задание, которое будет выполняться через заданное время. Это приложение занято там может быть задержка перед вызовом, так как Tkinter является однопоточным. Задержка обычно измеряется в микросекундах.
Python3 пример часов с использованием кадра.после (), а не приложение верхнего уровня. Также показывает обновление метки с помощью StringVar ()
#!/usr/bin/env python3 # Display UTC. # started with https://docs.python.org/3.4/library/tkinter.html#module-tkinter import tkinter as tk import time def current_iso8601(): """Get current date and time in ISO8601""" # https://en.wikipedia.org/wiki/ISO_8601 # https://xkcd.com/1179/ return time.strftime("%Y%m%dT%H%M%SZ", time.gmtime()) class Application(tk.Frame): def __init__(self, master=None): tk.Frame.__init__(self, master) self.pack() self.createWidgets() def createWidgets(self): self.now = tk.StringVar() self.time = tk.Label(self, font=('Helvetica', 24)) self.time.pack(side="top") self.time["textvariable"] = self.now self.QUIT = tk.Button(self, text="QUIT", fg="red", command=root.destroy) self.QUIT.pack(side="bottom") # initial time display self.onUpdate() def onUpdate(self): # update displayed time self.now.set(current_iso8601()) # schedule timer to call myself after 1 second self.after(1000, self.onUpdate) root = tk.Tk() app = Application(master=root) root.mainloop()
from tkinter import * import time tk=Tk() def clock(): t=time.strftime('%I:%M:%S',time.localtime()) if t!='': label1.config(text=t,font='times 25') tk.after(100,clock) label1=Label(tk,justify='center') label1.pack() clock() tk.mainloop()
Я только что создал простой таймер, используя шаблон MVP (однако это может быть перебор для этого простого проекта). Он вышел, запуск / пауза и кнопка остановки. Время отображается в формате чч:мм:СС. Отсчет времени осуществляется с помощью потока, который выполняется несколько раз в секунду, а разница между временем запуска таймера и текущего времени.
Comments