Pygame键盘输入问题

时间:2016-05-03 17:17:35

标签: python keyboard pygame

我正在尝试使用pygame获取用户键盘输入。然而,问题是我在IDLE上运行代码后,程序永远不会读取键盘输入,而shell上显示的是我输入的内容。如果我在PyCharm上运行我的代码,同样的问题。任何的想法?以下是我的代码:

pygame.init()
screen = pygame.display.set_mode((800, 600))
running = True
while running:
     for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        elif event.type == KEYDOWN and event.key == pygame.K_w:
            print("Yup!")
     pygame.display.flip()

2 个答案:

答案 0 :(得分:1)

我在使用Pycharm和python 3.6的Mac上也有完全相同的问题。我打印事件并且只记录MouseMotion事件,而不是KeyDown。

修改:显然这是一个已知问题:Window does not get focus on OS X with Python 3

这是我的代码,它也应该有效:

while not crashed:
for event in pygame.event.get():
    print(event)
    if event.type == pygame.QUIT:
        crashed = True

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

    if event.type == pygame.KEYDOWN:
        if event.key == pygame.K_1:
            print('this DOES work! :)')
        elif event.key == pygame.K_LEFT:
            x_change = -5
        elif event.key == pygame.K_RIGHT:
            x_change = 5
        elif pressed[pygame.K_UP]:
            print("UP")
    if event.type == pygame.KEYUP:
        if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
            x_change = 0

    pygame.display.flip()

x += x_change

gameDisplay.fill(black)
ship(x, y)

pygame.display.update()
clock.tick(60)

答案 1 :(得分:0)

这段代码非常适合我

import pygame

pygame.init()
windowSize = width,height = 800,600
screen = pygame.display.set_mode(windowSize)


running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
            quit()

        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_w:
                print("Yup!")



    pygame.display.flip()