added example for calendar layout using columns and tables

This commit is contained in:
DSK 2021-10-03 12:43:08 +05:30
parent 8279a6bf94
commit eed7100715
1 changed files with 56 additions and 0 deletions

56
examples/columns2.py Normal file
View File

@ -0,0 +1,56 @@
"""
Builds calendar layout using Columns and Tables.
Usage:
python columns2.py [YEAR]
Example:
python columns2.py 2021
"""
import argparse
import calendar
from datetime import datetime
from rich.table import Table
from rich.columns import Columns
from rich import print
def display_calendar(year=None):
today = datetime.today()
year = int(year or today.year)
cal = calendar.Calendar()
tables = []
for month in range(1,13):
table = Table(title=f"""{calendar.month_name[month]} {year}""", style="green")
for wd in cal.iterweekdays():
table.add_column("{:.3}".format(calendar.day_name[wd]))
month_days = cal.monthdayscalendar(year, month)
for weekdays in month_days:
days = []
for day in weekdays:
today_tuple = today.day, today.month, today.year
if day and (day, month, year) == today_tuple :
_day = "[bold underline red]%s[/]" % day
else:
_day = "%s" % ('' if day == 0 else day)
days.append(_day)
table.add_row(*days)
tables.append(table)
columns = Columns(tables, equal=True, expand=True)
print(columns)
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Rich calendar')
parser.add_argument('year', metavar='year', type=int, default=None)
args = parser.parse_args()
display_calendar(args.year)