/
githubmirror
/
rich
Обзор
Документация
Войти
/
githubmirror
/
rich
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
examples/print_calendar.py
70 строк
2 KB
Will McGugan
tweaked calendar example
10 окт 2021, 19:37
10 окт 2021, 19:37
ef53f47
Код
Авторство
О чём код?
""" Builds calendar layout using Columns and Tables. Usage: python print_calendar.py [YEAR] Example: python print_calendar.py 2021 """ import argparse import calendar from datetime import datetime from rich.align import Align from rich import box from rich.columns import Columns from rich.console import Console from rich.table import Table from rich.text import Text def print_calendar(year): """Print a calendar for a given year.""" today = datetime.today() year = int(year) cal = calendar.Calendar() today_tuple = today.day, today.month, today.year tables = [] for month in range(1, 13): table = Table( title=f"{calendar.month_name[month]} {year}", style="green", box=box.SIMPLE_HEAVY, padding=0, ) for week_day in cal.iterweekdays(): table.add_column( "{:.3}".format(calendar.day_name[week_day]), justify="right" ) month_days = cal.monthdayscalendar(year, month) for weekdays in month_days: days = [] for index, day in enumerate(weekdays): day_label = Text(str(day or ""), style="magenta") if index in (5, 6): day_label.stylize("blue") if day and (day, month, year) == today_tuple: day_label.stylize("white on dark_red") days.append(day_label) table.add_row(*days) tables.append(Align.center(table)) console = Console() columns = Columns(tables, padding=1, expand=True) console.rule(str(year)) console.print() console.print(columns) console.rule(str(year)) if __name__ == "__main__": parser = argparse.ArgumentParser(description="Rich calendar") parser.add_argument("year", metavar="year", type=int) args = parser.parse_args() print_calendar(args.year)