Tkinter istifadə edərək, bir taymer yaratmaq üçün necə?

Proqramı Python tkinter kitabxanasından istifadə edərək kodlaşdırmaq lazımdır.

Mənim əsas problemim, hh:mm:ss kimi bir taymer və ya saat yaratmağı bilmirəm.

Mən yenilənməliyəm (mən bunu necə bilmirəm).

61
08 марта '10 в 12:16 2010-03-08 12:16 Diego Kastro 8 Mart 'da 12:16' də soruşdu . 2010-03-08 12:16
@ 4 cavab

Tkinter kök pəncərələrində müəyyən bir müddət sonra çağırılacaq bir funksiyanı planlaşdırmaq üçün istifadə edə biləcəyiniz bir üsul var. Bu funksiya özü after çağırırsa avtomatik olaraq təkrarlanan bir hadisə qurdun.

İşdə nümunə:

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

Unutmayın ki, funksiya tam olaraq vaxtında işləməyinə zəmanət vermir. Yalnız müəyyən bir zamanda vəzifəni başlamağı planlaşdırır. Bu proqram məşğuldur, Tkinter tək yivli olduğundan, çağırılmadan əvvəl gecikmə ola bilər. Gecikmə adətən mikrosaniyədə ölçülür.

91
08 марта '10 в 15:20 2010-03-08 15:20 8 Mart 'da saat 15.20' də Bryan Oakley ' ye cavab verdi 2010-03-08 15:20

Python3 nümunəsi frame.after () istifadə edərək, üst səviyyəli tətbiqlər deyil. Həmçinin göstərilir ki, etiket StringVar () ilə yenilənir

border=0
 #!/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() 
7
01 дек. David Poole tərəfindən verilmiş cavab 01 dekabr 2015-12-01 17:21 '15 'da 17:21' de
 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() 
2
26 сент. Cavab Ravikiran D 26 Sep tərəfindən verilir . 2017-09-26 16:02 '17 saat 16:02 'da 2017-09-26 16:02

MVP modelini istifadə edərək sadəcə bir sadə timer yaratdım (lakin bu, bu sadə layihə üçün çoxlu sayda ola bilər). O, söndürüldü, başladı / dayandırdı və düyməni dayandı. Vaxt HH formatında göstərilir: MM: SS. Vaxtın hesablanması saniyədə bir neçə dəfə işləyən bir axından və timerin başlanğıc vaxtı arasındakı fərqi istifadə edərək həyata keçirilir.

Github mənbə kodu

1
03 июня '17 в 20:46 2017-06-03 20:46 Cavab Herman Yanush tərəfindən 03 İyun '17' də 20:46 2017-06-03 20:46 'də verilir