How to change the PyGame icon?

While building video games, we often want to set a custom image or logo for the developed game. Python's Pygame library provides the set_icon() function to set a custom window icon.

Pygame is a set of modules that allows us to develop games and multimedia applications. This is built on top of the SDL (Simple Direct Media Layer) library which provides low-level access to audio, keyboard, mouse, joystick, and graphics hardware through OpenGL and Direct3D.

Syntax

Following is the syntax for setting the icon for the game ?

pygame_icon = pygame.image.load("image_name")
pygame.display.set_icon(pygame_icon)

Where,

  • pygame_icon is the variable that stores the loaded image.

  • pygame.image.load() function loads an image from file.

  • image_name is the path to the image file.

  • pygame.display.set_icon() sets the window icon.

Setting Up Pygame Icon

For setting up the icon for the developed game, we need to follow these steps ?

Step 1: Install Pygame

First, install the pygame library using pip ?

pip install pygame
Collecting pygame
  Downloading pygame-2.3.0-cp39-cp39-win_amd64.whl (10.6 MB)
     ---------------------------------------- 10.6/10.6 MB 4.5 MB/s eta 0:00:00
Installing collected packages: pygame
Successfully installed pygame-2.3.0

Step 2: Initialize Pygame

Initialize the Pygame library ?

import pygame
pygame.init()

Step 3: Load and Set Icon

Load the image and set it as the window icon before creating the display surface ?

# Load the icon image
icon = pygame.image.load('icon.png')
# Set the icon (must be called before set_mode)
pygame.display.set_icon(icon)
# Create the display surface
screen = pygame.display.set_mode((400, 300))

Complete Example

Here's a complete working example that sets a custom icon for a Pygame window ?

import pygame

# Initialize pygame
pygame.init()

# Load and set icon (before creating display)
try:
    icon = pygame.image.load('icon.png')
    pygame.display.set_icon(icon)
except pygame.error:
    print("Icon file not found, using default icon")

# Set up display
screen = pygame.display.set_mode((400, 300))
pygame.display.set_caption("Game with Custom Icon")

# Game loop
running = True
clock = pygame.time.Clock()

while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
    
    # Fill screen with color
    screen.fill((100, 150, 200))
    
    # Draw a circle
    pygame.draw.circle(screen, (255, 255, 255), (200, 150), 50)
    
    # Update display
    pygame.display.flip()
    clock.tick(60)

# Quit
pygame.quit()

Important Points

  • Timing: The icon must be set before calling pygame.display.set_mode().

  • Image Format: Common formats like PNG, JPG, and BMP are supported.

  • Icon Size: Icons are typically 32x32 or 16x16 pixels for best results.

  • Error Handling: Use try-except blocks to handle missing image files gracefully.

Alternative Example

Here's another example with a different window size and drawing ?

import pygame

pygame.init()

# Set icon
try:
    icon = pygame.image.load('game_icon.png')
    pygame.display.set_icon(icon)
except pygame.error:
    pass  # Use default icon if file not found

screen = pygame.display.set_mode((500, 400))
pygame.display.set_caption("My Game")

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
    
    screen.fill((50, 50, 50))
    pygame.draw.rect(screen, (255, 0, 0), (200, 150, 100, 100))
    pygame.display.update()

pygame.quit()

Conclusion

Use pygame.display.set_icon() to set a custom window icon for your Pygame applications. Remember to load and set the icon before creating the display surface for it to take effect.

Updated on: 2026-03-27T11:30:07+05:30

2K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements