customization_example.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. # -*- coding: utf-8 -*-
  2. from datetime import datetime, timedelta
  3. import os
  4. import sys
  5. import time
  6. if os.getcwd() not in sys.path:
  7. sys.path.insert(0, os.getcwd())
  8. from pie_time import PieTime
  9. from pie_time.cards import ClockCard
  10. from pie_time.card import AbstractCard
  11. import pygame
  12. class ExampleCard(AbstractCard):
  13. def initialize(self):
  14. self.sprite = pygame.surface.Surface((20, 20))
  15. self.sprite.fill((255, 0, 0))
  16. self.orig_sprite_rect = self.sprite.get_rect()
  17. self.orig_speed = [2, 2]
  18. self.sprite_rect = self.orig_sprite_rect
  19. self.speed = self.orig_speed
  20. def show(self):
  21. self.sprite_rect = self.orig_sprite_rect
  22. self.speed = self.orig_speed
  23. def tick(self):
  24. self.sprite_rect = self.sprite_rect.move(self.speed)
  25. if self.sprite_rect.left < 0 or self.sprite_rect.right > self.width:
  26. self.speed[0] = -self.speed[0]
  27. if self.sprite_rect.top < 0 or self.sprite_rect.bottom > self.height:
  28. self.speed[1] = -self.speed[1]
  29. self.surface.fill(self.background_color)
  30. self.surface.blit(self.sprite, self.sprite_rect)
  31. class CustomApp(PieTime):
  32. def __init__(self, *args, **kwargs):
  33. super(CustomApp, self).__init__(*args, **kwargs)
  34. self._ctt_region_prev = pygame.Rect(0, 0, 160, 240)
  35. self._ctt_region_next = pygame.Rect(160, 0, 160, 240)
  36. def will_blank(self):
  37. self.logger.debug('CustomApp.will_blank')
  38. def will_unblank(self):
  39. self.logger.debug('CustomApp.will_unblank')
  40. deck = [
  41. (ClockCard, 10),
  42. (ExampleCard, 10),
  43. ]
  44. app = CustomApp(
  45. deck, verbose=True, fps=40,
  46. blanker_schedule=(
  47. timedelta(hours=23), timedelta(hours=6)
  48. ),
  49. click_to_unblank_interval=10
  50. )
  51. if __name__ == '__main__':
  52. app.run()