我希望在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))
答案 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程序易于阅读和理解,并且 更容易调试minutes
,seconds
和counter
而不是i
, j
和k
。
答案 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)