如何在Sublime Text 2上用Python制作倒计时钟

时间:2015-12-04 16:55:14

标签: python time sublimetext2 countdown

我希望在Sublime Text 2上使用Python创建倒计时时钟。我已经将它显示到它将显示的位置:

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))

4 个答案:

答案 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 :(得分:0)

我能想到的最简单的方法是让你的倒计时在状态栏中运行。 sublime.status_message()接受一个字符串参数并将其显示在底部的状态栏中。

此外,请尝试使用time.sleep(),而不是使用sublime.set_timeout()。创建一个回调函数,每次调用时将时间减少1秒。然后,使用set_timeout(callback, delay=1000)每秒调用一次(1000毫秒)。

最后,我强烈建议您使用语义变量 - 根据它们的名称命名它们,而不是随机的单字母名称。 Python程序易于阅读和理解,并且 更容易调试minutessecondscounter而不是ijk

答案 2 :(得分:0)

刚刚修改了@Fabio Duran Verdugo代码

public class MainViewModel : ObservableObject
{
    public List<IntegrationListItem> RightPanelViewModels { get; set; }

    MainViewModel()
    {
        RightPanelViewModels = new List<IntegrationListItem>();
    }

    private void ButtonPush()
    {
        ViewModels.Add(new SomeIntegration());
    }
}

public class IntegrationListItem
{
    public string Name { get; set; }
}

public class SomeIntegration : IntegrationListItem
{
    public string Name { get; set; }

    SomeIntegration()
    {
        Name = "XXXX";
    }
}

代码现在不打印冗余行(改进的ui),制作了一些代码文档以便于流程化。

PS:我对这段代码没有任何好评:)快乐学习的人

答案 3 :(得分:-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)