label.py 1.2 KB

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