带重启的定时器
Timer with restart
我想创建一个简单的计时器,用于显示当前剩余时间(在我的代码中,我使用 turtle 使其更清晰,但每秒少打印一秒也可以)。问题是我想要它,这样如果我按下键盘上的一个键(它可以是一个特定的键,比如 enter 或 space),我希望计时器重新启动。这是我当前的代码
time = input("Please enter the time").strip()
time = time.split(" ")
for i in range(len(time)):
time[i]=int(time[i])
print(time)
seconds = 3600*time[0]+60*time[1]+time[2]
import turtle as turt
from time import sleep
t = turt.Turtle()
t.hideturtle()
for i in range(seconds, 0, -1):
t.clear()
t.write(i, align = 'center', font=("Arial", 40, "normal"))
sleep(1)
t.clear()
t.write("TIMER DONE", align = 'center', font=("Arial", 40, "normal"))
我怎样才能使当我点击键盘上的一个键时计时器重新启动。在此先感谢您的帮助!
编辑: 基本上,我想要的是一种方法,这样每当我按下键盘上的一个键时,无论哪个键,它都会重新启动程序不管程序当前在哪一行。
使用下面的代码,当你按下space时定时器会重置。
time = input("Please enter the time").strip()
time = time.split(" ")
for i in range(len(time)):
time[i] = int(time[i])
print(time)
seconds = 3600 * time[0] + 60 * time[1] + time[2]
print(seconds)
import turtle as turt
from time import sleep
wn = turt.Screen()
t = turt.Turtle()
turt.listen()
def reset(seconds):
t.hideturtle()
turt.listen()
turt.onkey(up, "space")
for i in range(seconds, 0, -1):
t.clear()
t.write(i, align='center', font=("Arial", 40, "normal"))
sleep(1)
t.clear()
t.write("TIMER DONE", align='center', font=("Arial", 40, "normal"))
def up():
t.clear()
seconds = 3600 * time[0] + 60 * time[1] + time[2]
reset(seconds)
reset(seconds)
turt.done()
我会折腾time/sleep,用乌龟自己的ontimer()
来倒计时
from turtle import Screen, Turtle
FONT = ("Arial", 40, "normal")
strings = input("Please enter the time: ").strip().split(' ')
time = [60 ** (len(strings) - index - 1) * int(unit) for index, unit in enumerate(strings)]
seconds = -1
ticking = False
def tick():
global seconds, ticking
turtle.clear()
if seconds < 0:
turtle.write("TIMER DONE", align='center', font=FONT)
ticking = False
else:
turtle.write(seconds, align='center', font=FONT)
seconds -= 1
screen.ontimer(tick, 1000)
def reset():
global seconds, ticking
screen.onkey(None, "Return") # Disable event handler inside handler
seconds = sum(time)
if not ticking:
ticking = True
tick()
screen.onkey(reset, "Return") # Reenable event handler
screen = Screen()
turtle = Turtle()
turtle.hideturtle()
reset()
screen.listen()
screen.mainloop()
当您点击 时,它会回到原来的值并重新开始倒计时。即使在计时器停止后。如果您只想在时钟上显示 15 秒,只需输入“15”即可,您无需输入 所有 字段。
我想创建一个简单的计时器,用于显示当前剩余时间(在我的代码中,我使用 turtle 使其更清晰,但每秒少打印一秒也可以)。问题是我想要它,这样如果我按下键盘上的一个键(它可以是一个特定的键,比如 enter 或 space),我希望计时器重新启动。这是我当前的代码
time = input("Please enter the time").strip()
time = time.split(" ")
for i in range(len(time)):
time[i]=int(time[i])
print(time)
seconds = 3600*time[0]+60*time[1]+time[2]
import turtle as turt
from time import sleep
t = turt.Turtle()
t.hideturtle()
for i in range(seconds, 0, -1):
t.clear()
t.write(i, align = 'center', font=("Arial", 40, "normal"))
sleep(1)
t.clear()
t.write("TIMER DONE", align = 'center', font=("Arial", 40, "normal"))
我怎样才能使当我点击键盘上的一个键时计时器重新启动。在此先感谢您的帮助!
编辑: 基本上,我想要的是一种方法,这样每当我按下键盘上的一个键时,无论哪个键,它都会重新启动程序不管程序当前在哪一行。
使用下面的代码,当你按下space时定时器会重置。
time = input("Please enter the time").strip()
time = time.split(" ")
for i in range(len(time)):
time[i] = int(time[i])
print(time)
seconds = 3600 * time[0] + 60 * time[1] + time[2]
print(seconds)
import turtle as turt
from time import sleep
wn = turt.Screen()
t = turt.Turtle()
turt.listen()
def reset(seconds):
t.hideturtle()
turt.listen()
turt.onkey(up, "space")
for i in range(seconds, 0, -1):
t.clear()
t.write(i, align='center', font=("Arial", 40, "normal"))
sleep(1)
t.clear()
t.write("TIMER DONE", align='center', font=("Arial", 40, "normal"))
def up():
t.clear()
seconds = 3600 * time[0] + 60 * time[1] + time[2]
reset(seconds)
reset(seconds)
turt.done()
我会折腾time/sleep,用乌龟自己的ontimer()
来倒计时
from turtle import Screen, Turtle
FONT = ("Arial", 40, "normal")
strings = input("Please enter the time: ").strip().split(' ')
time = [60 ** (len(strings) - index - 1) * int(unit) for index, unit in enumerate(strings)]
seconds = -1
ticking = False
def tick():
global seconds, ticking
turtle.clear()
if seconds < 0:
turtle.write("TIMER DONE", align='center', font=FONT)
ticking = False
else:
turtle.write(seconds, align='center', font=FONT)
seconds -= 1
screen.ontimer(tick, 1000)
def reset():
global seconds, ticking
screen.onkey(None, "Return") # Disable event handler inside handler
seconds = sum(time)
if not ticking:
ticking = True
tick()
screen.onkey(reset, "Return") # Reenable event handler
screen = Screen()
turtle = Turtle()
turtle.hideturtle()
reset()
screen.listen()
screen.mainloop()
当您点击 时,它会回到原来的值并重新开始倒计时。即使在计时器停止后。如果您只想在时钟上显示 15 秒,只需输入“15”即可,您无需输入 所有 字段。