Пример #1
0
class AnalogClock(BaseClock):
    """Класс круглых стрелочных часов"""
    def __init__(self, *args):
        start_time = current_time(
        )  # Нужно для компенсации потерь времени на инициализацию
        super().__init__(*args)
        self.time = Time(self.time, limiter=(12, 60, 60, 1000))
        self._radius = min(self.size) // 2 * 0.95
        self._center = (self.location[0] + self.size[0] / 2,
                        self.location[1] + self.size[1] / 2)
        self._clock_face = ClockFace(self._radius, self._center)
        self._hour_arrow = Arrow(self._center, self._radius // 3,
                                 self._radius / 20, self.time.hour, 12)
        self._minute_arrow = Arrow(self._center, self._radius * 0.65,
                                   self._radius / 30, self.time.minute, 60,
                                   self._hour_arrow)
        self._second_arrow = Arrow(self._center,
                                   self._radius * 0.75, self._radius / 40,
                                   round(self.time.second), 60,
                                   self._minute_arrow)
        # Компенсация потерь времени на инициализацию
        self.time += current_time() - start_time
        self.update()

    def set_time(self, time):
        super().set_time(time)
        self.update()

    def set_hour(self, hour):
        super().set_hour(hour)
        self.update()

    def set_minute(self, minute):
        super().set_minute(minute)
        self.update()

    def set_second(self, second):
        super().set_second(second)
        self.update()

    def update(self):
        self._second_arrow.set_position(round(self.time.second))
        self._minute_arrow.set_position(self.time.minute)
        self._hour_arrow.set_position(self.time.hour)