我知道已经针对同一问题发布了一些问题,但提出的解决方案对我没有帮助。
我想在任何给定时间监视箭头键的状态(按下/未按下),所以我有以下代码:
import pygame
pygame.init()
a=[0,0,0,0]
while True:
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
a[0]=1;
else:
a[0]=0;
if keys[pygame.K_RIGHT]:
a[1]=1;
else:
a[1]=0;
if keys[pygame.K_UP]:
a[2]=1;
else:
a[2]=0;
if keys[pygame.K_DOWN]:
a[3]=1;
else:
a[3]=0;
print a
pygame.event.pump()
所以,基本上,我一直打印一个列表 a 的4个数字,每个数字代表一个箭头键(如果按下则为1,否则为0)。
但是,即使我长按箭头键,列表的所有值也始终为零。
我还尝试打印整个键数组:无论我按哪个键和多长时间,所有条目都会再次为零
非常感谢任何帮助......
谢谢!
编辑:忘了提到我在Windows 7上使用python 2.7
答案 0 :(得分:2)
首先,如果你还没有真正创建一个pygame窗口,那么没有事件会传递给pygame,因此pygame.key.get_pressed()
的结果不会更新。 Pygame只在currrent pygame窗口上接收事件。您可能正在查看未接收事件的控制台。我在pygame.display.set_mode((100,100))
之后添加了pygame.init()
,然后运行了该程序。我点击了pygame窗口。然后控制台开始在控制台中显示相应的控件。
还建议添加一些内容来暂停循环,例如time.sleep
和类似事件检查以突破它。 (适当退出)