简体   繁体   中英

Carriage Return not working in IDLE?

I'm trying to create a code for a countdown timer that stays in place: so that each line overwrites the previous one. This is what I have so far:

import time

def countdown(t):
    while t:
        mins, secs = divmod(t, 60)
        timeformat = "{:02d}:{:02d}".format(mins, secs)
        print(timeformat, end='\r')
        time.sleep(1)
        t -= 1
    print("That's the end! You lose...\n\n\n\n\n")
    exit()

countdown(10)

The output, however, is:

00:10
00:09
00:08
...
00:00
That's the end! You lose...

Why is the carriage return seemingly not working?

IDLE doesn't support most control characters such as \\r , \\b . It is still true in 2020 (no support in Python 3.9)

\\r should work if you start Python REPL in a Unix terminal or in Windows console instead.

\\r不起作用时,尝试\\x08 (退格),并添加flush=True以确保安全:

print('\x08' * 5 + timeformat, end='', flush=True)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM