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
。您应该只有一个无限循环-主循环。