Python 3.x python3箭头键返回值

Python 3.x python3箭头键返回值,python-3.x,pygame,Python 3.x,Pygame,我想向一个类添加一个方法,该类返回按下的下一个箭头键。为什么我的代码不起作用 def returnKeyEntry(self): while True: press = pygame.key.get_pressed() if press[K_UP]: return "up" break if press[K_DOWN]: return "down"

我想向一个类添加一个方法,该类返回按下的下一个箭头键。为什么我的代码不起作用

    def returnKeyEntry(self):
      while True:
        press = pygame.key.get_pressed()        
        if press[K_UP]:
          return "up"
          break
        if press[K_DOWN]:
          return "down"
          break
        if press[K_RIGHT]:
          return "right"
          break
        if press[K_LEFT]: 
          return "left"
          break

您的代码不起作用,因为它是一个无限循环,不运行任何PyGame事件代码。在未运行事件队列的情况下,您正在查询的Pygame键盘状态不会得到更新。因此,如果在调用函数的那一刻没有按下箭头键,它将永远循环(不管以后按下什么)

如果您没有使用Pygame事件队列的其余部分,您仍然可以让它通过每帧调用一次来处理其内部内容。如果您在分配
按下
之前执行了此操作,则当按下箭头键时,您显示的其余代码应返回(在
返回
之后,
中断
语句都是不必要的,但这是无害的)。但是,请注意,当您等待按下箭头键时,背景中不会发生任何事情(这可能不是您想要的)


更好的方法是将输入处理集成到代码中其他地方的现有循环中。如果不了解更多关于您的项目及其组织方式的信息,我真的无法提供具体的建议。您的代码不起作用,因为它是一个无限循环,不运行任何PyGame事件代码。在未运行事件队列的情况下,您正在查询的Pygame键盘状态不会得到更新。因此,如果在调用函数的那一刻没有按下箭头键,它将永远循环(不管以后按下什么)

如果您没有使用Pygame事件队列的其余部分,您仍然可以让它通过每帧调用一次来处理其内部内容。如果您在分配
按下
之前执行了此操作,则当按下箭头键时,您显示的其余代码应返回(在
返回
之后,
中断
语句都是不必要的,但这是无害的)。但是,请注意,当您等待按下箭头键时,背景中不会发生任何事情(这可能不是您想要的)


更好的方法是将输入处理集成到代码中其他地方的现有循环中。如果不了解更多关于您的项目及其组织方式的信息,我真的无法提供具体的建议。

什么是“不起作用”呢?你看到了意想不到的结果吗?您是否遇到错误?什么都没有发生,程序卡在循环中:(至少删除
而为True
。您应该只有一个无限循环-主循环。“不工作”是什么意思?您是否看到意外结果?您是否遇到错误?什么都没有发生,程序卡在循环中:(至少删除
而为True
。您应该只有一个无限循环-主循环。