在python中创建计时器

在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

我想创建一种秒表,当分钟数达到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 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)