所以我有一个任务,要编写一个程序,用python每20秒游戏点击一下,同时实现一个计时器,以在程序启动时启动,并在20秒后中断程序。
我试图首先使用时间睡眠功能,该时间睡眠功能与点击游戏无法同时工作,因此现在我使用time语句进入time.time()。我做了一个计时器,将游戏代码放在了while语句下,但是计时器不起作用。
from graphics import *
import time
start = time.time()
end = start + 20 #20 second timer
while time.time() < end:
def display(x,y):
global numClicks
clear()
numClicks +=1
drawString("Number of clicks: "+str(numClicks),
100,150,"Arial",28,"normal")
update()
numClicks = 0
beginGrfx(800,500)
onscreenclick(display)
endGrfx
点击游戏最初也可以正常工作,但是现在点击1次后,它就会中断,并且计时器不起作用。
我得到的错误是
Traceback (most recent call last):
File "H:\4th HOUR PROGRAMMING B SPRING 2019\PYTHON\click\click.py", line 17, in <module>
beginGrfx(800,500)
File "H:\4th HOUR PROGRAMMING B SPRING 2019\PYTHON\click\graphics.py", line 91, in beginGrfx
tracer(0,0)
File "<string>", line 5, in tracer
turtle.Terminator
答案 0 :(得分:2)
处理此问题的最简单方法是在新线程上设置计时器(通过threading
module),并使其在关闭时禁用单击。例如:
import threading
canClick = True
def disableClicking():
global canClick
canClick = False
timer = threading.Timer(20.0, disableClicking)
timer.start()
while canClick:
# the rest of your code for counting clicks
20秒后,计时器将关闭,canClick
将被设置为false,循环将结束。