In Pygame 2

In pygame 2 the display surface is automatically resized when the window is - set_mode() should not be called. The VIDEORESIZE event instead lets us handle any other surfaces, or anything else, we might want to resize.

Example:
import pygame from pygame.locals import * pygame.init() screen = pygame.display.set_mode((500, 500), RESIZABLE) pic = pygame.image.load("example.png") # You need an example picture in the same folder as this file! running = True while running: pygame.event.pump() event = pygame.event.wait() if event.type == QUIT: running = False elif event.type == VIDEORESIZE: screen.blit(pygame.transform.scale(pic, event.dict['size']), (0, 0)) pygame.display.update() elif event.type == VIDEOEXPOSE: # handles window minimising/maximising screen.fill((0, 0, 0)) screen.blit(pygame.transform.scale(pic, screen.get_size()), (0, 0)) pygame.display.update()

In Pygame 1



Example:
import pygame from pygame.locals import * pygame.init() screen=pygame.display.set_mode((500,500),HWSURFACE|DOUBLEBUF|RESIZABLE) pic=pygame.image.load("example.png") #You need an example picture in the same folder as this file! screen.blit(pygame.transform.scale(pic,(500,500)),(0,0)) pygame.display.flip() while True: pygame.event.pump() event=pygame.event.wait() if event.type==QUIT: pygame.display.quit() elif event.type==VIDEORESIZE: screen=pygame.display.set_mode(event.dict['size'],HWSURFACE|DOUBLEBUF|RESIZABLE) screen.blit(pygame.transform.scale(pic,event.dict['size']),(0,0)) pygame.display.flip()