2015-12-04 35 views
1

我期待創建崇高文字2.我已經得到了它的地步,它會顯示使用Python倒計時鐘:如何使一個倒計時鐘在Python的崇高文字2

01: 00 00:59 00:58 ... 00:00

不過,我想這樣它看起來像一個連續倒計時只在一個位置上顯示的計時器。我嘗試了很多方法,但似乎無法在Sublime中覆蓋該行。這裏是我到目前爲止的代碼:

def countdown(p,q): 
    i=p 
    j=q 
    k=0 
    while True: 
     if(j==-1): 
      j=59 
      i -=1 
     if(j > 9): 
      print(str(k)+str(i)+":"+str(j), end='\r'), 
     else: 
      print(str(k)+str(i)+":"+str(k)+str(j) , end='\r'), 
     time.sleep(1) 
     j -= 1 
     if(i==0 and j==-1): 
      break 
    if(i==0 and j==-1): 
     print("Goodbye!", end="\r") 
     time.sleep(1) 
print(countdown(1,0)) 

回答

0

據我所知,sublime沒有方法來清除控制檯。下面給出的代碼將顯示您在終端中需要的結果。

import time,os 
def countdown(p,q): 
    i=p 
    j=q 
    k=0 
    while True: 
     if(j==-1): 
      j=59 
      i -=1 
     if(j > 9): 
      print str(k)+str(i) +":"+str(j), 
     else: 
      print str(k)+str(i)+":"+str(k)+str(j), 
     time.sleep(1) 
     j -= 1 
     if(i==0 and j==-1): 
      break 
     os.system("cls") # or os.system("clear") if on linux 
    if(i==0 and j==-1): 
     os.system("cls") 
     print "Goodbye!", 
     time.sleep(1) 
print countdown(1,0) 

但是,有一個破解here。您可以使用print('\n'*100)來模擬清除控制檯的行爲。

-1

Concat結果並每次打印concat var。

import time                  

def countdown(p,q):                
    i=p                   
    j=q                   
    k=0                   
    a=""                   
    while True:                 
     if(j==-1):                
      j=59                 
      i -=1                
     if(j > 9):                
      a += str(k)+str(i)+":"+str(j) + " "         
     else:                 
      a += str(k)+str(i)+":"+str(k)+str(j) + " "                        
     print (a, end='\r')              
     time.sleep(1)               
     j -= 1                 
     if(i==0 and j==-1):              
      break                
    if(i==0 and j==-1):               
     print("Goodbye!", '\r')             
     time.sleep(1)               
countdown(1,0) 
0

我能想到的最簡單的方法是讓你的倒計時在狀態欄中運行。 sublime.status_message()需要一個字符串參數並將其顯示在底部的狀態欄中。

而且,代替使用time.sleep(),請嘗試使用sublime.set_timeout()。創建一個回調函數,每次調用時間減少1秒。然後,使用set_timeout(callback, delay=1000)每秒調用一次(1000毫秒)。

最後,我強烈建議您使用語義變量 - 根據它們的名稱命名,而不是隨機的單字母名稱。 Python程序意味着易於閱讀和理解,並且它的很多更易於調試minutessecondscounter而不是ijk