search

Home  >  Q&A  >  body text

Python如何让倒计时效果的在固定区域刷新

高洛峰高洛峰2803 days ago1613

reply all(1)I'll reply

  • PHP中文网

    PHP中文网2017-04-17 15:10:26

    Sorry, it’s me again.
    Let's learn more about "b" which means backspace. It will move one space to the left and delete the actual characters on that space. For details, please refer to the ascii encoding table

    There are only two ways

    1) Whole row coverage.

    pythonimport sys, time
    
    def interface_show(**kwargs):
        lineTmpla = ' '*5 + kwargs['title'] + kwargs['artist'] + kwargs['rate'] + " %-3s"
        print time_remain(lineTmpla, kwargs['minutes']),
    
    def time_remain(lineTmpla, mins):
        count = 0 
        while (count < mins):
            count += 1
            n = mins - count
            time.sleep(1)
            sys.stdout.write("\r" + lineTmpla %(n),)
            sys.stdout.flush()
            if not n:
                return 'completed'
    
    interface_show(title="倒计时demo", artist="哗嚓啊", rate="揍起来", minutes=5)
    

    2) Partial coverage

    You need to move the cursor. I only know b for now. If anyone knows the others and is willing to tell me, I would be very grateful

    pythonimport sys, time
    
    def interface_show(**kwargs):
        print ' '*5, kwargs['title'], kwargs['artist'], kwargs['rate'], time_remain(kwargs['minutes'])
    
    def time_remain(mins):
        count = 0
        length = len(str(mins))
        sys.stdout.write(" " * length,)
        while (count < mins):
            count += 1
            n = mins - count
            time.sleep(1)
            sys.stdout.write(('\b' * length) + str(n),)
            sys.stdout.flush()
            if not n:
                return 'completed'
    
    interface_show(title="倒计时demo", artist="哗嚓啊", rate="揍起来", minutes=5)
    

    reply
    0
  • Cancelreply