Как создать таймер с помощью tkinter?



Мне нужно закодировать программу с библиотекой Tkinter Python.



моя главная проблема в том, что я не знаю как создать таймер или часы как
hh:mm:ss.



Мне нужно обновиться (вот что я не знаю как это сделать).

712   4  

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 (однако это может быть перебор для этого простого проекта). Он вышел, запуск / пауза и кнопка остановки. Время отображается в формате чч:мм:СС. Отсчет времени осуществляется с помощью потока, который выполняется несколько раз в секунду, а разница между временем запуска таймера и текущего времени.

исходный код на github

Comments

    Ничего не найдено.