马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 qq12346 于 2021-9-29 10:14 编辑
想实现一个按键检测功能,代码如下: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好像没有用。想请教一下应该怎么做? |