Skip to content

Instantly share code, notes, and snippets.

@shravanasati
Created July 22, 2023 17:37
Show Gist options
  • Save shravanasati/e0348970eab0f934ee120c4950aba5d4 to your computer and use it in GitHub Desktop.
Save shravanasati/e0348970eab0f934ee120c4950aba5d4 to your computer and use it in GitHub Desktop.
simple typing animation in python using rich
from time import sleep
from rich import print
from rich.align import Align
from rich.layout import Layout
text = "Hi there! This text is gonna be animated."
duration = 10
sleeping_duration = duration / len(text)
blinking_duration = 0.5
blinking_times = 3
layout = Layout()
layout.split_column(
Layout("\n\n", name="upper"),
Layout(name="middle"),
Layout("\n\n", name="lower"),
)
layout["upper"].ratio = 1
layout["middle"].ratio = 2
layout["lower"].ratio = 1
for i in range(1, len(text) + 1):
layout["middle"].update(Align(f"{text[:i-1]}[underline]{text[i-1:i]}[/]|", "center"))
print(layout)
sleep(sleeping_duration)
# blinking text
for _ in range(blinking_times):
layout["middle"].visible = False
print(layout)
sleep(blinking_duration)
layout["middle"].visible = True
print(layout)
sleep(blinking_duration)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment