label.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. # -*- coding: utf-8 -*-
  2. import pygame
  3. from .widget import Widget
  4. from . import font_manager
  5. class Label(Widget):
  6. def __init__(self, x, y, width=1, height=1, text="", font_obj=font_manager.get_font("default"),
  7. color=(83, 83, 83), bg_color=None,
  8. auto_resize=True):
  9. super().__init__(x=x, y=y, width=width, height=height, color=color, bg_color=bg_color)
  10. self._Text = text
  11. self._Color = color
  12. self._FontObj = font_obj
  13. self._AutoResize = auto_resize
  14. self._Resize()
  15. def _Resize(self):
  16. if not self._AutoResize:
  17. return
  18. tmp = self._FontObj.render(self._Text, True, self._Color)
  19. self.set_size(tmp.get_width(), tmp.get_height())
  20. def set_font(self, fontname):
  21. self._FontObj = font_manager.get_font(fontname)
  22. self._Resize()
  23. def GetText(self):
  24. return self._Text
  25. def SetText(self, text):
  26. self._Text = text
  27. self._Resize()
  28. def Draw(self):
  29. super().Draw()
  30. # Avoding same font tangling set_bold to others
  31. self._FontObj.set_bold(False)
  32. my_text = self._FontObj.render(self._Text, True, self._Color)
  33. self._Parent.get_canvas().blit(my_text, self._Rect)