使用pygame读取控制台输入


问题内容

无论如何,是否有必要使用pygame从控制台获取输入,而不必显示单独的窗口以获取输入?我正在使用pygame跟踪键盘上的按键被按下了多长时间。

以下代码不起作用(这只是一个最小的示例,它实际上并不跟踪经过的时间):

pygame.init()

while 1:
    for event in pygame.event.get():
        if event.type == pygame.KEYDOWN:
            print event.key, 'pressed'

看起来没有任何pygame事件被引发。如果我加

screen = pygame.display.set_mode((640, 480))

pygame.init()

然后引发了事件,但是我有一个我不想处理的可怕的窗口。

为了解释为什么我不想要该窗口,我设想此应用程序是命令行实用程序,因此我无法使用它。是否有任何功能上的原因阻止pygame在命令行上运行?

谢谢!

编辑:
我推测问题是pygame.init(),并且我只需要初始化键和事件模块。根据http://www.pygame.org/docs/tut/ImportInit.html,我应该可以打电话

pygame.key.init()  
pygame.event.init()

但这没用。


问题答案:

Pygame专为制作(图形)游戏而设计,因此它仅在显示窗口时捕获按键。正如伊格纳西奥(Ignacio)在回答中所说的那样,从命令行和另一个窗口读取内容是非常不同的。

如果要创建命令行应用程序,请尝试使用curses:

http://docs.python.org/library/curses.html

不幸的是,它仅适用于Linux和Mac OSX。