How to take input from Keyboard in Pygame using Python

In this module, we are going to discuss how to take input from the keyboard in Pygame in Python. Like moving the character using the arrow keys i.e when we press left arrow the character moves left.

Taking Input from keyboardUsing pygame.get_pressed() in Python

To take input from keyboard we use the syntax as follows

key_input = pygame.key.get_pressed()

This method is used to identify the keypress events that are represented as follows:

  • pygame.K_LEFT
  • pygame.K_UP
  • pygame.K_RIGHT
  • pygame.K_DOWN

There are many key events like this K_SPACE used when space is pressed on keyboard similarly K_LEFT used when left arrow is pressed.

The following code gives a complete description of above-mentioned keyboard events

import pygame
import sys
pygame.init()
fps=30
fpsclock=pygame.time.Clock()
sur_obj=pygame.display.set_mode((400,300))
pygame.display.set_caption("Rectangle")
black=(0,0,0)
p1=10
p2=10
step=5
while True:
    sur_obj.fill(black)
    pygame.draw.rect(sur_obj, (255,0,0), (p1, p2,70,65))
    for eve in pygame.event.get():
        if eve.type==pygame.QUIT:
            pygame.quit()
            sys.exit()
    key_input = pygame.key.get_pressed()   
    if key_input[pygame.K_LEFT]:
        p1 -= step
    if key_input[pygame.K_UP]:
        p2 -= step
    if key_input[pygame.K_RIGHT]:
        p1 += step
    if key_input[pygame.K_DOWN]:
        p2 += step
    pygame.display.update()
    fpsclock.tick(fps)

Output:

How to take input from Keyboard in Pygame using Python

We get the output as a rectangle with red in color on a black screen when we press the left arrow it is moved left similarly when we press-up it moves up.

sur_obj.fill(black)

We are filling up the screen with black color after each event update and performing the next event on that black screen.

pygame.draw.rect(sur_obj, (255,0,0), (p1, p2, 70, 65))

This method is used for creating a rectangle and it is initially located at position (p1,p2).

if key_input[pygame.K_LEFT]:
        p1 -= step
if key_input[pygame.K_UP]:
        p2 -= step
if key_input[pygame.K_RIGHT]:
        p1 += step
if key_input[pygame.K_DOWN]:
        p2 += step

Here these are used to check which keys are pressed each perform following actions

  • K_LEFT: it moves rectangle to the position (p1-5,p2). when we subtract 5 pixels from x coordinate.
  • K_UP: it moves rectangle to the position (p1,p2-5). when we subtract 5 pixels from y coordinate.
  • K_RIGHT: it moves rectangle to position(p1+5,p2). when we add 5 pixels to x coordinate.
  • K_DOWN: it moves rectangle to position(p1,p2+5). when we add 5 pixels to y coordinate.
pygame.display.update()
fpsclock.tick(fps)

We used fpsclock.tick(fps) because in pygame, we are not updating the current window but creating a new window with an update. Therefore tick() helps us to achieve this task running the screen as though it is making the rectangle move.

Also read:

Leave a Reply