Красивый таймер
Суть проблемы проста - есть код для вывода времени(как в обычном таймере), но он выводит построчно. Может кто знает, какой литерал нужно использовать для того, чтобы время выводилось нормально (т.е. в одну строку с возвратом каретки, но без перехода на следующую строку, что позволило бы выводить время постоянно в одну и ту же строку на одно и тоже месте)?
import time
seconds = 57
while True:
print('{:02}:{:02}:{:02}'.format(seconds // 3600 % 24,
seconds // 60 % 60,
seconds % 60))
time.sleep(1.0)
seconds += 1
Ответы (3 шт):
Для очистки можно воспользоваться системными средствами
или ANSII \033c escape-последовательностью:
import os
def cls():
print("\033c", end='')
# os.system('cls' if os.name=='nt' else 'clear')
import time
seconds = 57
while True:
cls()
print('{:02}:{:02}:{:02}'.format(seconds // 3600 % 24,
seconds // 60 % 60,
seconds % 60))
time.sleep(1.0)
seconds += 1
Или, если убрать из печати перенос строки, можно воспользоваться возвратом каретки \r:
import time
seconds = 57
while True:
# cls()
print('\r{:02}:{:02}:{:02}'.format(seconds // 3600 % 24,
seconds // 60 % 60,
seconds % 60), end='')
time.sleep(1.0)
seconds += 1
Такой вариант подойдет?
import time
seconds = 57
while True:
d = str('{:02}:{:02}:{:02}'.format(seconds // 3600 % 24,
seconds // 60 % 60,
seconds % 60))
print(d[0:20], end = "\r")
time.sleep(1)
seconds += 1
В принципе решается добавление end = "\r" в print
Как-то так:
import time
seconds = 57
while True:
d = str('{:02}:{:02}:{:02}'.format(seconds // 3600 % 24,
seconds // 60 % 60,
seconds % 60))
print(d[0:20], end="")
time.sleep(1)
print("\r\033[K", end='') # перенос курсора в начало текущей строки
seconds += 1
О! Вот нашел из старых ответов vp_arth:
import colorama
from time import sleep
from datetime import datetime
digits = dict()
digits['0'] = 'Zero'
digits['1'] = 'One'
digits['2'] = 'Two'
digits['3'] = 'Three'
digits['4'] = 'Four'
digits['5'] = 'Five'
digits['6'] = 'Six'
digits['7'] = 'Seven'
digits['8'] = 'Eight'
digits['9'] = 'Nine'
colorama.init()
while True:
for ch in datetime.now().strftime("%H:%M:%S"):
if ch in digits:
print(digits[ch], end='')
else:
print(ch, end='')
sleep(1)
print("\r\033[K", end='')
Ну и вот вариант с красивыми арабскими цифрами (меняем значения словаря) :)
digits['0'] = '\u0660'
digits['1'] = '\u0661'
digits['2'] = '\u0662'
digits['3'] = '\u0663'
digits['4'] = '\u0664'
digits['5'] = '\u0665'
digits['6'] = '\u0666'
digits['7'] = '\u0667'
digits['8'] = '\u0668'
digits['9'] = '\u0669'
Вывод:
٢١:٥٣:٠٨