python的'pygame.key.get_pressed()'模块无法识别按键

时间:2016-11-28 12:07:56

标签: python pygame

我正在尝试创建一个函数,如果按下某个键,则会更改变量。这将被放入一个在屏幕上移动精灵的类中。释放密钥时,while循环被打破。然而,没有任何反应。 while循环正在运行,我没有错误。有谁知道为什么会发生这种情况?我不确定我是否正确使用模块'pygame.key.get_pressed()'。

import pygame
from pygame.locals import *
def move():
    for event in pygame.event.get():
            if event.type == QUIT:
                pygame.QUIT()
                sys.exit()
    while True:
        pressed = pygame.key.get_pressed()
        if pressed[pygame.K_UP]:
            print("something happens")
        #runs this, but when up arrow key is pressed does nothing
        if event.type == KEYUP:
            False

screen = pygame.display.set_mode((512,384))
move()          
pygame.display.update()

2 个答案:

答案 0 :(得分:1)

你可以做到   `

def move():
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.QUIT()
            sys.exit()

        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_UP:
                print("up pressed")

            # etc.

        if event.type == pygame.KEYUP:
            if event.key == pygame.K_UP:
                print("up released")

            # etc.

` 有关更多关键名称,您可以转到pygame key docs

答案 1 :(得分:1)

get_pressed()返回列表,其中包含有关按下的键的信息,但此列表由pygame.event.get()和其他事件函数更新,因此您必须始终执行pygame.event.get()。这就是我们在while-loop

中这样做的原因
import pygame   

pygame.init()
screen = pygame.display.set_mode((512,384))

while True:

    # get events and (somewhere in background) update list
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

    # get current list.
    pressed = pygame.key.get_pressed()
    if pressed[pygame.K_UP]:
        print("UP")