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