Python Pygame未正确处理键盘或鼠标事件

Python Pygame未正确处理键盘或鼠标事件,python,python-3.x,pygame,Python,Python 3.x,Pygame,我最近在Mac上重新安装了pygame。我安装了PyGame1.9.2a0。我在windows上有相同的版本,在Mac上也有相同的版本。但是我在这个新的安装中得到了奇怪的结果。我注意到所有的draw命令都可以正常工作,但由于某些原因,单击pygame窗口无法正常工作。窗口在后台打开,这不正常,但不是什么大问题。但是,所有按键都会重定向到终端/IDE(应用程序从该终端运行)。我在下面附上了一个我正在测试的非常简单的程序。程序只是寻找转义键。请注意,这在我的windows计算机上运行良好 TL;DR

我最近在Mac上重新安装了pygame。我安装了PyGame1.9.2a0。我在windows上有相同的版本,在Mac上也有相同的版本。但是我在这个新的安装中得到了奇怪的结果。我注意到所有的draw命令都可以正常工作,但由于某些原因,单击pygame窗口无法正常工作。窗口在后台打开,这不正常,但不是什么大问题。但是,所有按键都会重定向到终端/IDE(应用程序从该终端运行)。我在下面附上了一个我正在测试的非常简单的程序。程序只是寻找转义键。请注意,这在我的windows计算机上运行良好

TL;DR:为什么选择了pygame窗口时,按键会发送到终端而不是pygame窗口的事件循环

我对这个问题感到困惑,主要是因为我以前从未经历过类似的问题。我也不确定如何调试这个问题。如果需要更多信息,我很乐意提供

import pygame
import sys
from pygame.locals import *

pygame.init()
size = width, height = 100, 100
screen = pygame.display.set_mode(size)

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
        elif event.type == KEYDOWN:
            if event.key == K_ESCAPE:
                pygame.event.post(pygame.event.Event(QUIT))

    screen.fill((30, 30, 30))
    pygame.display.flip()
对于好奇的人:

  • MacOSX 10.10.1
  • Python 3.4.2(通过pyenv)
  • Pygame:1.9.2a0
更新:


我有一个理论认为在一个新的提交中出现了某种问题。所以我决定把他们的存储库拉下来,恢复到以前的提交。这似乎相当有希望,特别是因为他们在2015年1月初进行了一次“大爆炸”合并,共有8个左右的请求。因此,在大规模合并发生之前,我将存储库拉回到提交状态,问题完全相同。我决定对其他几个提交(合并位置前后)执行此操作,但仍然没有更改。有什么建议吗?

看起来您正在尝试在不必使用角落里的X的情况下设置关机键。这就是我在需要的时候所做的

key = pygame.key.get_pressed()
running = 1

while running:
  for event in pygame.event.get():

if event.type == QUIT:
    pygame.quit()
    running = 0
elif key[pygame.K_ESCAPE]:
    pygame.quit()
    running = 0
希望这有帮助。 顺便说一下,转义键并不总是有效的,所以可以将其设置为不同的键绑定。 对于鼠标,您需要检查鼠标的位置

def run():
    pos = pygame.mouse.get_pos()

#check_events
check_events(pos)

如果您只是想在按下退出键的同时退出游戏,那么您应该在事件循环中执行以下操作

for event in pygame.event.get():
     if event.type == pygame.KEYDOWN:
          if event.key == pygame.K_ESCAPE:
               pygame.quit()
               quit()
这只会盖上逃生钥匙。如果需要,可以稍后添加窗口“X”按钮。Windows和Apple pygame版本之间会出现一些问题


希望这有助于解决您的问题

你预计会发生什么?发生了什么事?我没有经历过这样的问题。这是什么?@AJ Pygame不应该在Pygame窗口处于活动状态时将按键重定向到终端/IDE。不管代码是什么。Pygame以某种方式将这些按键重定向到终端(或IDE)。测试程序的目的是当按下退出键时,事件循环处理按钮事件并正确退出。这不是在当前的Mac安装中完成的,但在Windows安装中确实可以。