Python如何让倒计时效果的在固定区域刷新
高洛峰
高洛峰 2017-04-17 15:08:26
0
1
1583
高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回覆(1)
洪涛

不好意思,又是我。
再科普一個 "b" 是退格的意思,它會向左移動一格並刪除該格子上現實的字符,詳情請參考ascii編碼表

辦法無非就兩個

1) 整行覆蓋。

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) 局部覆蓋

需要移動遊標,在下暫時只知道 b,有人知道其它並願意告知的話就太感謝了

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)
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!