【问题标题】:Pygame doesn't catch keydown events on macPygame 不会在 mac 上捕获 keydown 事件
【发布时间】:2014-02-14 17:08:00
【问题描述】:

当我试图捕捉按下的键时,它们会打印在终端中,但不会被 pygame 和脚本捕捉到。脚本执行如下:

>>>import scriptname
>>>scriptname.wa()

脚本名称文件: 导入pygame 从 pygame.locals 导入 *

def wa():
    pygame.init()
    screen = pygame.display.set_mode((640, 480), 0, 32)

    alive_key = True

    while alive_key:
        for event in pygame.event.get():
            if event.type == QUIT:
                alive_key = False
            elif event.type == KEYDOWN and event.key == K_q:
                print '\nThis is not happening\n'

        screen.fill((0, 0, 0))

        if pygame.mouse.get_pressed()[0]:
            pygame.event.post(
              pygame.event.Event(KEYDOWN, key=K_q, mod=0, unicode=u'q'))

        pygame.display.update()

    pygame.quit()

如果事件是在鼠标按下时创建的(如代码所示),它们会起作用。

我使用的是 OS X 10.8.5、python 2.7、pygame2.7 1.9.1。在具有类似配置的 Windows 7 中一切正常。

谢谢!

【问题讨论】:

  • 不知道这个问题是不是和this other issue类似...
  • 感谢链接,但 python2.6 没有帮助,同样的问题。

标签: python macos pygame keydown


【解决方案1】:

将您的代码更改为:

elif event.type == KEYDOWN or event.type == pygame.KEYDOWN:
    # for testing purpose
    print event 

    if event.key == pygame.K_q:
        print '\nThis is not happening\n

我使用的是 OS X 10.9.5、python 2.7.7、pygame-1.9.2pre-py2.7-macosx10.7。和你之前有类似的问题。我在这里找到了这个解决方案:http://content.gpwiki.org/index.php/Python:Pygame_keyboard_input

我认为这可能不是 mac 的错。

【讨论】:

  • 无法测试,不再拥有这台 Mac。这看起来根本不像一个解决方案。我之前尝试过,python没有捕获到关键事件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-06
相关资源
最近更新 更多