|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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好像没有用。想请教一下应该怎么做? |
|