Форум сайта python.su
0
Решил сделать для себя таймер который отсчитывает заданное время и показывает его от 0.
Получился вот такой код.
Хотел заменить sleep на threading но пока не вышло.
Хочу узнать можно было бы сделать это как то проще?
import datetime import time point_time = datetime.datetime.now() p_hour = point_time.hour p_minute = point_time.minute p_second = point_time.second ts=p_second+p_minute*60+p_hour*60*60 def timer(se, mt=0,ht=0): now_time = datetime.datetime.now() now_hour = now_time.hour now_minute = now_time.minute now_second = now_time.second tn=now_hour*60*60+now_minute*60+now_second+50+365+3600+3600 #цифры добавленны для теста таймера dt=tn-se print (dt) if dt>59: st=dt-(dt//60)*60 mt=mt+dt//60 print (mt) if mt>59: ht=ht+mt//60 mt=mt-(mt//60)*60 print(ht ,mt,st) i=100 #время в секундах сколько отсчитать while i>0: i=i-1 time.sleep(1) timer(ts)
Отредактировано 3dpython (Окт. 2, 2012 19:58:31)
Офлайн
173
3dpython
Хотел заменить sleep на threading но пока не вышло.
Хочу узнать можно было бы сделать это как то проще?
import datetime from threading import Timer def tick(started=None): Timer(1.0, tick, args=(started,)).start() elapsed = datetime.datetime.now() - started print str(elapsed) tick(datetime.datetime.now())
Офлайн
14
А не знатный костыль ли? Что, если tick будет выполняться дольше, чем интервал?
Офлайн
0
Запустил этот код в IDLE. Не выходит по клавишам cntr+C. И к секундам в конце добавилось 0,01.
Офлайн
0
Решил попробовать вывести его в gui. Используя задержку через after. Но выходит какойто глюк.
решил просто упростить код. через return Тоже глючит.
from tkinter import * root=Tk() x=0 def la(x): x=x+1 lab['text'] = x lab.after(1000, la(x)) lab=Label(root, text=x) lab.pack() lab.after(500, la(x)) root.mainloop()
Офлайн