Beispiel #1
0
    def screen_logic(self, screen: Screen):
        from datetime import datetime, timedelta
        t0 = datetime.now()
        try:
            for t in range(self.seconds + 1):
                # For best accuracy, calculate time till next "frame" based on actual time
                wait_for_it = t0 + timedelta(seconds=t)
                seconds_to_wait = (wait_for_it - datetime.now()).total_seconds()
                if seconds_to_wait > 0:
                    time.sleep(seconds_to_wait)
                elif seconds_to_wait < -0.1:
                    # Skip a frame if we're running late
                    continue

                effects = [Print(screen, FigletText(str(self.seconds - t)), 0)]
                scene = Scene(effects, 40)
                screen.set_scenes([scene])
                # Strange, it seems a few frames need to be skipped.
                for _ in range(10):
                    screen.draw_next_frame(repeat=False)
        except StopApplication:
            return
Beispiel #2
0
 def update_screen(self, end_time, loop: asyncio.AbstractEventLoop, screen: Screen):
     screen.draw_next_frame()
     if loop.time() < end_time:
         loop.call_later(0.05, self.update_screen, end_time, loop, screen)
     else:
         loop.stop()
Beispiel #3
0
async def play_order_book(screen: Screen):
    while True:
        screen.draw_next_frame()
        await asyncio.sleep(0.05)