Skip to content
alekay2200 edited this page Sep 16, 2022 · 3 revisions

Resumen

En el módulo view/abstract_view.py se encuentra la clase abstracta View en la que se deben basar todas las vistas.

Las vistas contienen la lista de iconos que forman parte de ella. Estas controlan cuando deben actualizarse redibujando los iconos.

View(id: int, display: Display, signals: Set[int])

id

Identificador único de la vista.

display

Pantalla a la que está asociada la vista.

signals

Conjunto de señales que puede recibir.

arrive_signal(signal: int)

Función para controlar las señales que recibe la vista.

refresh()

Redibuja los iconos que necesiten actualizarse.

get_display() -> Display

Devuelve la pantalla que tiene asignada

get_id() -> int

Devuelve el identificador de la vista

get_signlas() -> Set[int]

Devuelve el conjunto de señales que puede recibir.

Ejemplo implementación de vista para mostrar la hora en la pantalla

from icon.battery import Battery
from icon.wifi import Wifi
from view.abstract_view import View
from display.abstract_display import Display
from icon.text import Text
from constants.signals import SIG_CLOCK

class Home_View(View):

    def __init__(self, display: Display):
        signals = {SIG_CLOCK}
        super().__init__(1, display, signals)

        clock_time = self.__get_time()
        
        self._icons.append(Text(self, (57, 68), clock_time, self._display.get_fonts().FONT4, self._display.get_colors().WHITE, self._display.get_colors().BLACK))
        self._icons.append(Battery(self, (10, 10), (60, 25)))
        self._icons.append(Wifi(self, (self._display.get_width() - 20, 5), (self.get_display().get_width() - 10, 25)))

    def __get_time(self) -> str:
        datetime = self._display.get_sys_manager().get_localtime()
        hour = str(datetime[3])
        minutes = str(datetime[4])
        seconds = str(datetime[5])
        if len(hour) < 2: hour = "0" + hour
        if len(minutes) < 2: minutes = "0" + minutes
        if len(seconds) < 2: seconds = "0" + seconds
        return f"{hour}:{minutes}:{seconds}"

    def arrive_signal(self, signal):
        if signal == SIG_CLOCK:
            self._icons[0].set_text(self.__get_time())

Clone this wiki locally