在python中创建计时器
我想创建一种秒表,当分钟数达到20分钟时,会显示一个对话框,对话框不是问题所在。但我的minutes变量在此代码中不递增在python中创建计时器,python,time,Python,Time,我想创建一种秒表,当分钟数达到20分钟时,会显示一个对话框,对话框不是问题所在。但我的minutes变量在此代码中不递增 import time def timer(): now = time.localtime(time.time()) return now[5] run = raw_input("Start? > ") while run == "start": minutes = 0 current_sec = timer() #print curr
import time
def timer():
now = time.localtime(time.time())
return now[5]
run = raw_input("Start? > ")
while run == "start":
minutes = 0
current_sec = timer()
#print current_sec
if current_sec == 59:
mins = minutes + 1
print ">>>>>>>>>>>>>>>>>>>>>", mins
应该是
mins = minutes + 1
而且
minutes = minutes + 1
需要在while循环之外。您可能正在寻找一个计时器对象:尝试使用如下while循环:
minutes = 0
从线程中查看
怎么样
minutes = 0
while run == "start":
current_sec = timer()
#print current_sec
if current_sec == 59:
minutes = minutes + 1
print ">>>>>>>>>>>>>>>>>>>>>", mins
如果要将参数传递给timeout
函数,可以在计时器构造函数中提供:
from threading import Timer
def timeout():
print("Game over")
# duration is in seconds
t = Timer(20 * 60, timeout)
t.start()
# wait for time completion
t.join()
或者您可以使用
functools.partial
创建绑定函数,或者您可以传入实例绑定方法。您可以使用以下方法简化整个程序:
您的代码非常完美,但必须执行以下替换操作:
import time
run = raw_input("Start? > ")
mins = 0
# Only run if the user types in "start"
if run == "start":
# Loop until we reach 20 minutes running
while mins != 20:
print(">>>>>>>>>>>>>>>>>>>>> {}".format(mins))
# Sleep for a minute
time.sleep(60)
# Increment the minute total
mins += 1
# Bring up the dialog box here
或
但这个问题还有另一个解决方案:
minutes = minutes + 1 #instead of mins = minutes + 1
我会用一个物体
从datetime导入datetime,timedelta
...
时段=时间增量(分钟=1)
next_time=datetime.now()+句点
分钟=0
运行时==“开始”:
如果下次我想创建一种秒表,当分钟数达到20分钟时,会显示一个对话框
你只需要在规定的时间睡觉。time.sleep()睡眠需要几秒钟,所以20*60等于20分钟
from datetime import datetime, timedelta
...
period = timedelta(minutes=1)
next_time = datetime.now() + period
minutes = 0
while run == 'start':
if next_time <= datetime.now():
minutes += 1
next_time += period
事实上,我自己也在寻找一个计时器,而你的代码似乎工作正常,你的分钟数没有被计算的可能原因是当你这么说的时候
分钟=0
然后
分钟=分钟+1
这等于说
分钟=0+1
我敢打赌,每次你打印分钟,它都会显示“1”,因为我刚才解释过,“0+1”总是会导致“1”
你首先要做的是确定你的位置
分钟=0
在while循环之外声明。之后,您可以删除
分钟=分钟+1
行,因为在这种情况下,您实际上不需要另一个变量,只需将其替换为
分钟=分钟+1
这样,分钟将以值“0”开始,接收新值“0+1”,接收新值“1+1”,接收新值“2+1”,等等
我意识到很多人已经回答了这个问题,但我认为如果你能看到自己在哪里犯了错误并试图纠正它,这会有更大的帮助,从学习的角度来看,希望它能帮助你。还有,谢谢你的计时器
import time
def timer():
now = time.localtime(time.time())
return now[5]
run = raw_input("Start? > ")
while run == "start":
minutes = 0
current_sec = timer()
#print current_sec
if current_sec == 59:
mins = minutes + 1
print ">>>>>>>>>>>>>>>>>>>>>", mins
这项工作非常适合计时秒。此外,minutes=0
需要在循环之外,如果您要坚持使用此代码。但实际上,他可能应该使用更适合该任务的东西。如果计时器对象触发的动作非常重要,那么使用计时器对象可能会变得棘手。如果使用计时器,您必须处理线程同步问题。time.sleep有什么作用?@user2711485-无论您告诉它多少秒,它都会暂停计算机(在本例中为60秒,即一分钟)。换句话说,它说的是“在时间用完之前什么都不做”。在使用time.sleep()时是否可能有其他代码运行?例如,如果你正在制作一个游戏,计时器会在后台运行,还是会在time.sleep()时停止一切调用?@Qwertieϟ-在调用time.sleep
完成之前,一切都将暂停。这就是时间睡眠的目的:停止程序执行一段时间。@Qwertieϟ-用于此。嘿,伙计们,我不认为我的问题得到了回答。概念是编写一个代码,在指定的时间后弹出一个对话框。你的代码尝试每分钟打印一个计时器刻度。你想要最后的代码来做这件事,还是只是弹出一个对话框?只是在大概15分钟结束时弹出一个对话框,我会设置这就是为什么我需要“time.sleep(1500)”这是一个例子,这样你的main就不会立即退出:DIn gui应用程序你只需要继续你的mainloop。好的,因此,您的代码意味着,当t启动时,它会在该时间间隔内执行超时函数中的任何内容?超时函数在20分钟后执行一次。希望我拙劣的语言能有所帮助,因为这样做有效,不断运行循环会消耗大量的处理能力。增加睡眠时间(哪怕只有一秒钟)可以大大减少这种使用。循环“被认为是一种反模式,应该避免,因为可以用来执行不同任务的处理器时间被浪费在无用的活动上。”
def wait(time_in_seconds):
time.sleep(time_in_seconds) #here it would be 1200 seconds (20 mins)
from datetime import datetime, timedelta
...
period = timedelta(minutes=1)
next_time = datetime.now() + period
minutes = 0
while run == 'start':
if next_time <= datetime.now():
minutes += 1
next_time += period
import time
run = raw_input("Start? > ")
time.sleep(20 * 60)
your_code_to_bring_up_dialog_box()
# this is kind of timer, stop after the input minute run out.
import time
min=int(input('>>'))
while min>0:
print min
time.sleep(60) # every minute
min-=1 # take one minute
import time
...
def stopwatch(mins):
# complete this whole code in some mins.
time.sleep(60*mins)
...
import time
def timer(n):
while n!=0:
n=n-1
time.sleep(n)#time.sleep(seconds) #here you can mention seconds according to your requirement.
print "00 : ",n
timer(30) #here you can change n according to your requirement.
import time
def timer():
now = time.localtime(time.time())
return now[5]
run = raw_input("Start? > ")
while run == "start":
minutes = 0
current_sec = timer()
#print current_sec
if current_sec == 59:
mins = minutes + 1
print ">>>>>>>>>>>>>>>>>>>>>", mins
import time
mintt=input("How many seconds you want to time?:")
timer=int(mintt)
while (timer != 0 ):
timer=timer-1
time.sleep(1)
print(timer)