想实现一个按键检测功能,代码如下:
def wait4keys(duration=1500):
left = (WIN_LENGTH / 4 - IMG_HEIGHT / 2, WIN_WIDTH / 2 - IMG_WIDTH / 2)
right = (3 * WIN_LENGTH / 4 - IMG_HEIGHT / 2, WIN_WIDTH / 2 - IMG_WIDTH / 2)
pygame.event.clear()
t_start = pygame.time.get_ticks()
while True:
t_now = pygame.time.get_ticks()
if t_now - t_start > duration:
return 'BLANK'
else:
for event in pygame.event.get():
if event.type == KEYDOWN:
if event.key == K_LEFT:
choice = 'left'
pygame.draw.polygon(win, red, [eval(choice),
(eval(choice)[0] + IMG_HEIGHT, eval(choice)[1]), (
eval(choice)[0] + IMG_HEIGHT,
eval(choice)[1] + IMG_WIDTH),
(eval(choice)[0], eval(choice)[1] + IMG_WIDTH)], 10)
elif event.key == K_RIGHT:
choice = 'right'
pygame.draw.polygon(win, red, [eval(choice),
(eval(choice)[0] + IMG_HEIGHT, eval(choice)[1]), (
eval(choice)[0] + IMG_HEIGHT,
eval(choice)[1] + IMG_WIDTH),
(eval(choice)[0], eval(choice)[1] + IMG_WIDTH)], 10)
elif event.key in [K_ESCAPE]:
resp = pygame.key.name(event.key)
pygame.event.clear()
return resp
else:
continue
pygame.event.clear()
return choice
我需要做多次试验,每次调用这个函数去返回当前试验中按下的是左还是右。现在存在一个问题,当我按多次键后,它会在这一次试验中返回第一次按下的键,而按下的其他键会在后几次依次返回。这样会影响后面的记录。我只想返回当前试次中它第一次按下的键,将不小心按下的键清除掉。下一次重新开始记录。使用pygame.event.clear好像没有用。想请教一下应该怎么做?