Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pygame
- from pygame.sprite import Sprite
- class Button(Sprite):
- def __init__(self, caption, font, rect, callback,
- text_color=pygame.Color('white'),
- button_color=pygame.Color('slateblue'),
- hover_color=pygame.Color('dodgerblue')):
- Sprite.__init__(self)
- self.rect = rect
- self.hover = False
- self.callback = callback
- # Build are text and center it
- image_caption = font.render(caption, 1, text_color)
- image_rect = image_caption.get_rect()
- image_rect.center = pygame.Vector2(rect.center) - rect.topleft
- # Build are normal image
- self.image_normal = pygame.Surface(rect.size)
- self.image_normal.fill(button_color)
- self.image_normal.blit(image_caption, image_rect)
- # Build are hover image
- self.image_hover = pygame.Surface(rect.size)
- self.image_hover.fill(hover_color)
- self.image_hover.blit(image_caption, image_rect)
- # Override image to control the draw method
- @property
- def image(self):
- if self.hover:
- return self.image_hover
- else:
- return self.image_normal
- def on_mousemotion(self, event):
- self.hover = self.rect.collidepoint(event.pos)
- def on_clicked(self, event):
- if event.button == 1:
- if self.rect.collidepoint(event.pos):
- self.callback(self)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement