2016-05-03 20 views
1

Ich versuche, Benutzer Tastatureingabe mit Pygame zu bekommen. Das Problem ist jedoch, dass, nachdem ich meinen Code auf IDLE ausgeführt habe, die Tastatureingabe niemals vom Programm gelesen wird und alles, was ich tippe, in der Shell angezeigt wird. Gleiches Problem, wenn ich meinen Code auf PyCharm ausführe. Irgendeine Idee? Unten ist mein Code:Pygame Tastatureingabe Ausgabe

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() 
+0

Warum der Hack führen Sie eine 'pygame' App im Terminal? ! 'pygame' dient zum Erstellen von Spielen in Nicht-Terminalfenstern! – linusg

+0

Es hat nicht funktioniert, auch wenn ich mit IDLE oder pycharm lief ... – lanlan2271

+0

Stellen Sie sicher, dass das Pygame-Fenster den Fokus hat, sonst wird Ihre Tastatureingabe nicht erkannt werden! – linusg

Antwort

0

Dieser Code funktioniert perfekt für mich

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() 
0

ich genau das gleiche Problem habe, auch auf einem Mac 3.6 PyCharm und Python verwenden. Ich drucke die Ereignisse und nur MouseMotion-Ereignisse werden aufgezeichnet und nicht KeyDown.

Edit: anscheinend ist es ein bekanntes Problem: Window does not get focus on OS X with Python 3

Das ist mein Code ist, und es sollte auch funktionieren:

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)