pygame.event.get()没有返回任何事件

时间:2016-08-21 04:32:27

标签: python pygame

import pygame
from pygame.locals import *

...
...

while True:
   #comment
   for event in pygame.event.get():
      if event.type == KEYDOWN:
         key_pressed = pygame.key.get_pressed()
         #do something

我用print语句替换#comment,发现for loop根本没有执行,即print语句无限运行。

我所期待的是,get_pressed()会在按下按键后立即按下按键,但它不会发生。

上述代码有什么问题,我该如何纠正?

编辑:添加指向python脚本文件的链接 python script

1 个答案:

答案 0 :(得分:3)

pygame.event.get()获取已在事件队列中注册的所有事件,并将它们保持在发生的顺序中。 pygame.key.get_pressed()只有那一刻按下的键。这意味着当你的游戏试图访问它们时必须按下它们。

您不需要同时使用这两种方法。相反,只需循环遍历事件,并在密钥匹配您想要的密钥时执行某些操作。常见的是对光标键作出反应,如下所示:

import pygame
from pygame.locals import *

pygame.init()
...
...

while True:
    #comment
    for event in pygame.event.get():

        if event.type == KEYDOWN:

            if event.key == pygame.K_DOWN:
                print('Down was pressed')

            if event.key == pygame.K_UP:
                print('Up was pressed')

            if event.key == pygame.K_RIGHT:
                print('Right was pressed')

            if event.key == pygame.K_LEFT:
                print('Left was pressed')