tweak to test card

This commit is contained in:
Will McGugan 2020-07-02 20:00:33 +01:00
parent 11c0022439
commit 9e6ac1e0ee
17 changed files with 396 additions and 41 deletions

243
examples/table_movie.py Normal file
View file

@ -0,0 +1,243 @@
from contextlib import contextmanager
import time
from rich.console import Console
from rich.table import Table
from rich.measure import Measurement
from rich import box
from rich.text import Text
TABLE_DATA = [
[
"May 25, 1977",
"Star Wars Ep. [b]IV[/]: [i]A New Hope",
"$11,000,000",
"$1,554,475",
"$775,398,007",
],
[
"May 21, 1980",
"Star Wars Ep. [b]V[/]: [i]The Empire Strikes Back",
"$23,000,000",
"$4,910,483",
"$547,969,004",
],
[
"May 25, 1983",
"Star Wars Ep. [b]VI[/b]: [i]Return of the Jedi",
"$32,500,000",
"$23,019,618",
"$475,106,177",
],
[
"May 19, 1999",
"Star Wars Ep. [b]I[/b]: [i]The phantom Menace",
"$115,000,000",
"$64,810,870",
"$1,027,044,677",
],
[
"May 16, 2002",
"Star Wars Ep. [b]II[/b]: [i]Attack of the Clones",
"$115,000,000",
"$80,027,814",
"$656,695,615",
],
[
"May 19, 2005",
"Star Wars Ep. [b]III[/b]: [i]Revenge of the Sith",
"$115,500,000",
"$380,270,577",
"$848,998,877",
],
]
console = Console()
BEAT_TIME = 0.05
@contextmanager
def beat(length: int = 1) -> None:
with console:
console.clear()
yield
time.sleep(length * BEAT_TIME)
table = Table(show_footer=False)
console.clear()
console.show_cursor(False)
try:
table.add_column("Release Date", no_wrap=True)
with beat(10):
console.print(table, justify="center")
table.add_column("Title", Text.from_markup("[b]Total", justify="right"))
with beat(10):
console.print(table, justify="center")
table.add_column("Budget", "[u]$412,000,000", no_wrap=True)
with beat(10):
console.print(table, justify="center")
table.add_column("Opening Weekend", "[u]$577,703,455", no_wrap=True)
with beat(10):
console.print(table, justify="center")
table.add_column("Box Office", "[u]$4,331,212,357", no_wrap=True)
with beat(10):
console.print(table, justify="center")
table.title = "Star Wars Box Office"
with beat(10):
console.print(table, justify="center")
table.title = (
"[not italic]:popcorn:[/] Star Wars Box Office [not italic]:popcorn:[/]"
)
with beat(10):
console.print(table, justify="center")
table.caption = "Made with Rich"
with beat(10):
console.print(table, justify="center")
table.caption = "Made with [b]Rich[/b]"
with beat(10):
console.print(table, justify="center")
table.caption = "Made with [b magenta]Rich[/]"
with beat(10):
console.print(table, justify="center")
for row in TABLE_DATA:
table.add_row(*row)
with beat(10):
console.print(table, justify="center")
table.show_footer = True
with beat(10):
console.print(table, justify="center")
table_width = Measurement.get(console, table, console.width).maximum
table.columns[2].justify = "right"
with beat(10):
console.print(table, justify="center")
table.columns[3].justify = "right"
with beat(10):
console.print(table, justify="center")
table.columns[4].justify = "right"
with beat(10):
console.print(table, justify="center")
table.columns[2].header_style = "bold red"
with beat(10):
console.print(table, justify="center")
table.columns[3].header_style = "bold green"
with beat(10):
console.print(table, justify="center")
table.columns[4].header_style = "bold blue"
with beat(10):
console.print(table, justify="center")
table.columns[2].style = "red"
with beat(10):
console.print(table, justify="center")
table.columns[3].style = "green"
with beat(10):
console.print(table, justify="center")
table.columns[4].style = "blue"
with beat(10):
console.print(table, justify="center")
table.columns[0].style = "cyan"
table.columns[0].header_style = "bold cyan"
with beat(10):
console.print(table, justify="center")
table.columns[1].style = "magenta"
table.columns[1].header_style = "bold magenta"
with beat(10):
console.print(table, justify="center")
table.columns[2].footer_style = "bright_red"
with beat(10):
console.print(table, justify="center")
table.columns[3].footer_style = "bright_green"
with beat(10):
console.print(table, justify="center")
table.columns[4].footer_style = "bright_blue"
with beat(10):
console.print(table, justify="center")
table.row_styles = ["none", "dim"]
with beat(10):
console.print(table, justify="center")
for color in [
"deep_pink4",
"dark_khaki",
"medium_purple2",
"thistle3",
"orange1",
]:
table.border_style = color
with beat(10):
console.print(table, justify="center")
for box in [
box.ASCII,
box.ASCII2,
box.DOUBLE,
box.DOUBLE_EDGE,
box.HEAVY_EDGE,
box.MINIMAL_HEAVY_HEAD,
box.MINIMAL_DOUBLE_HEAD,
box.SIMPLE,
box.SIMPLE_HEAD,
]:
table.box = box
with beat(20):
console.print(table, justify="center")
original_width = Measurement.get(console, table).maximum
for width in range(original_width, console.width, 2):
table.width = width
with beat(2):
console.print(table, justify="center")
for width in range(console.width, original_width, -2):
table.width = width
with beat(2):
console.print(table, justify="center")
for width in range(original_width, 90, -2):
table.width = width
with beat(2):
console.print(table, justify="center")
for width in range(90, original_width + 1, 2):
table.width = width
with beat(2):
console.print(table, justify="center")
table.width = None
with beat(2):
console.print(table, justify="center")
finally:
console.show_cursor(True)