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