【问题标题】:Read console input using pygame使用 pygame 读取控制台输入
【发布时间】:2015-08-15 06:49:55
【问题描述】:

有没有办法使用 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()
但它没有用。

【问题讨论】:

    标签: python pygame


    【解决方案1】:

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

    如果你想创建一个命令行应用,试试curses:

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

    很遗憾,它仅适用于 Linux 和 Mac OS X。

    【讨论】:

    【解决方案2】:

    如果您只是使用使窗口非常小

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

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

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

          【讨论】:

          • 试过了,不行。未检测到键盘事件。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-05-08
          • 2012-08-27
          • 1970-01-01
          • 2017-09-05
          相关资源
          最近更新 更多