使用pygame读取控制台输入

时间:2012-03-22 03:23:21

标签: python 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(),我只需要初始化密钥和事件模块。根据{{​​3}},我应该可以致电

pygame.key.init()
pygame.event.init()
,但这不起作用。

5 个答案:

答案 0 :(得分:2)

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

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

  

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

不幸的是,它仅适用于Linux和Mac OS X.

答案 1 :(得分:1)

如果你只是使用

使窗口变小

screen = pygame.display.set_mode((1,1))

你无法看到它。所以你被点击进入窗口但你没有注意到。

如果你点击任何地方当然它会停止工作。你必须点击pygame窗口图标才能再次使用它。

答案 2 :(得分:0)

控制台输入来自stdin,pygame不准备处理。没有可靠的方法通过stdin获取按下/释放事件,因为它取决于终端发送按键。

答案 3 :(得分:0)

如果你只是想要一个任何类型的窗口,你可以使用PyHook。如果您只想要一个控制台应用程序,请使用内置的Python命令“raw_input(...)”获取用户输入。

答案 4 :(得分:0)

试试pygame.display.iconify()。 这将隐藏pygame屏幕,你仍然可以检测到按键。

相关问题