pygame animated button with images - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: General (https://python-forum.io/forum-1.html) +--- Forum: Code sharing (https://python-forum.io/forum-5.html) +--- Thread: pygame animated button with images (/thread-38052.html) |
pygame animated button with images - menator01 - Aug-28-2022 Example of using images and pygame for buttons. (did not do the callback function part). Just hover and click animation. Hope it will help someone. import pygame pygame.init() pygame.font.init() # Setup pygame screen screen_size = (800, 600) screen = pygame.display.set_mode(screen_size) pygame.display.set_caption('Pygame Button') # Setup some colors screen_bg = 'ivory2' # Set framerate fps = 60 framerate = pygame.time.Clock() # Load and define button images. Three states normal, hover, and pressed normal = pygame.image.load('normal.png') hover = pygame.image.load('hover.png') pressed = pygame.image.load('pressed.png') # change cursor on hover hand = pygame.SYSTEM_CURSOR_HAND # Create Button class class Button: def __init__(self, image, pos, callback): ''' Create a animated button from images self.callback is for a funtion for the button to do - set to None ''' self.image = image self.rect = self.image.get_rect(topleft=pos) self.callback = callback # Define function for normal button state def normal(self): self.image = normal pygame.mouse.set_cursor() # Define function for mouse hover state def hover(self): self.image = hover pygame.mouse.set_cursor(hand) # Define function for pressed state def pressed(self): self.image = pressed # Set a variabe to True and enter loop running = True while running: # Fill screen with background color screen.fill(screen_bg) # Start event loop for event in pygame.event.get(): if event.type == pygame.QUIT: running = False # Create a button from the Button class with args for state, position, and callback button = Button(normal, (100, 100), None) # Get mouse button from pygame left, middle, right = pygame.mouse.get_pressed() # If cursor is over button change state to hover else state is normal if button.rect.collidepoint(pygame.mouse.get_pos()): button.hover() # If left mouse button pressed change state to pressed else hover if left and button.rect.collidepoint(pygame.mouse.get_pos()): button.pressed() else: button.hover() else: button.normal() # Blit button to screen screen.blit(button.image, button.rect) # Set framerate and update framerate.tick(fps) pygame.display.update() RE: pygame animated button with images - Bad - Feb-16-2024 thanks alot! really helped give me a good idea, although i didn't use anyof it, thanks anyway |