Guest User

Untitled

a guest
Mar 21st, 2018
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.41 KB | None | 0 0
  1. import pygame
  2.  
  3.  
  4. class Label:
  5. def __init__(self, rect, rect_color, text, font_color, center=False):
  6. self.rect = pygame.Rect(rect)
  7. self.text = text
  8. self.rect_color = rect_color
  9. self.font_color = font_color
  10. self.center = center
  11. self.font = pygame.font.Font(None, self.rect.height - 4)
  12. self.rendered_text = None
  13. self.rendered_rect = None
  14.  
  15. def render(self, surface):
  16. if self.rect_color != -1:
  17. surface.fill(self.rect_color, self.rect)
  18. self.rendered_text = self.font.render(self.text, 10, self.font_color)
  19. if self.center:
  20. self.rendered_rect = self.rendered_text.get_rect(center=self.rect.center)
  21. else:
  22. self.rendered_rect = self.rendered_text.get_rect(x=self.rect.x + 2, centery=self.rect.centery)
  23. surface.blit(self.rendered_text, self.rendered_rect)
  24.  
  25.  
  26. class TextBox(Label):
  27. def __init__(self, rect, rect_color, text, font_color):
  28. super().__init__(rect, rect_color, text, font_color)
  29. self.active = False
  30. self.done = False
  31. self.blink = False
  32. self.blink_timer = 0
  33.  
  34. def get_event(self, event):
  35. if self.done:
  36. self.done = False
  37. self.text = ""
  38. if event.type == pygame.KEYDOWN and self.active:
  39. if event.key in (pygame.K_RETURN, pygame.K_KP_ENTER):
  40. self.active = False
  41. self.done = True
  42. elif event.key == pygame.K_BACKSPACE:
  43. if len(self.text) > 0:
  44. self.text = self.text[:-1]
  45. else:
  46. self.text += event.unicode
  47. if self.rendered_rect.width > self.rect.width:
  48. self.text = self.text[:-1]
  49. elif event.type == pygame.MOUSEBUTTONDOWN and event.button == 1:
  50. self.active = self.rect.collidepoint(*event.pos)
  51.  
  52. def update(self):
  53. if pygame.time.get_ticks() - self.blink_timer > 200:
  54. self.blink = not self.blink
  55. self.blink_timer = pygame.time.get_ticks()
  56.  
  57. def render(self, surface):
  58. super(TextBox, self).render(surface)
  59. if self.active and self.blink:
  60. pygame.draw.line(surface, [255 - self.font_color[c] for c in range(3)],
  61. (self.rendered_rect.right + 2, self.rendered_rect.top + 2),
  62. (self.rendered_rect.right + 2, self.rendered_rect.bottom - 2), 2)
Add Comment
Please, Sign In to add comment