在设定的时间内制作可以多次单击的程序,然后停止该程序,并在时间到时断开该程序

时间:2019-06-07 16:38:34

标签: python

所以我有一个任务,要编写一个程序,用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

1 个答案:

答案 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,循环将结束。