Python:pygame.key.get_pressed无效

时间:2013-08-27 13:20:15

标签: python pygame keypress

我知道已经针对同一问题发布了一些问题,但提出的解决方案对我没有帮助。

我想在任何给定时间监视箭头键的状态(按下/未按下),所以我有以下代码:

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

1 个答案:

答案 0 :(得分:2)

首先,如果你还没有真正创建一个pygame窗口,那么没有事件会传递给pygame,因此pygame.key.get_pressed()的结果不会更新。 Pygame只在currrent pygame窗口上接收事件。您可能正在查看未接收事件的控制台。我在pygame.display.set_mode((100,100))之后添加了pygame.init(),然后运行了该程序。我点击了pygame窗口。然后控制台开始在控制台中显示相应的控件。

还建议添加一些内容来暂停循环,例如time.sleep和类似事件检查以突破它。 (适当退出)