almightyjack
almightyjack

Reputation: 21

How do I make get_pressed to work in pygame?

Despite hunting around I can't seem to find an answer to this seemingly simple question:

I'm new to pygame (but not to python), and am trying to get some code to work from continuous button presses - but get_pressed just does not seem to work for me. I made this just to check that I wasn't going insane (I've left out the importing to make it neat for you guys):

def buttonpress():
  while True:
    keys = pygame.key.get_pressed()
    print keys[K_SPACE]
    time.sleep(0.5)
buttonpress()

To the best of my knowledge, this should return a '1' when you press the space bar, but no matter what key you change it too - it simply returns an endless string of zeros.

What am I missing?

Thanks

Upvotes: 1

Views: 101

Answers (1)

Bartlomiej Lewandowski
Bartlomiej Lewandowski

Reputation: 11170

There is no code that processes the input to get all the keys pressed. In order for this to work you need to call event.poll().

So your code will look like this.

import pygame
from pygame.locals import *
import time

pygame.init()

screen = pygame.display.set_mode((640,380))
def buttonpress():
  while True:
    keys = pygame.key.get_pressed()
    print (keys[K_SPACE])
    time.sleep(0.5)
    pygame.event.poll()
buttonpress()

One more thing, do not use time.sleep(). This pauses the thread, and can cause the OS to think that your application does not respond (since it's not removing events from the event queue).

Upvotes: 1

Related Questions