import flet as ft
def main(page: ft.Page):
page.title = "Сборник методических материалов"
page.vertical_alignment = ft.MainAxisAlignment.START
page.horizontal_alignment = ft.CrossAxisAlignment.CENTER
page.padding = 30
header_text = ft.Text("Сборник", size=24, weight=ft.FontWeight.BOLD, color=ft.Colors.CYAN_ACCENT)
# Контейнер для карточек с прокруткой
content_area = ft.Column(scroll=ft.ScrollMode.AUTO, expand=True)
# Наш простой локальный список элементов
elements_list = [
{
"title": "Элемент 1: Базовая поддержка",
"category": "Акробатика",
"school": "Московская школа",
"description": "Классический элемент хореографии с поддержкой партнера.",
"description_2": "Особое внимание уделяется постановке стопы.",
},
{
"title": "Элемент 2: Плавный поворот",
"category": "Вращения",
"school": "Петербургская школа",
"description": "Круговой элемент на 360 градусов.",
"description_2": "Руки удерживаются в первой позиции.",
},
{
"title": "Элемент 3: Шаг с акцентом",
"category": "Шаги",
"school": "Смешанный стиль",
"description": "Динамичное перемещение по диагонали.",
"description_2": "",
}
]
# Перебираем элементы и создаем карточки
for el in elements_list:
column_items = [
ft.Container(
content=ft.Text("Видео / Ссылка", color=ft.Colors.WHITE),
bgcolor=ft.Colors.GREY_800,
height=120,
alignment=ft.alignment.center,
border_radius=8
),
ft.Text(f"Название: {el['title']}", weight=ft.FontWeight.BOLD, size=18),
ft.Text(f"Категория: {el['category']} | Школа: {el['school']}", size=14),
ft.Text(f"Описание: {el['description']}", size=14),
]
# Если есть второе описание — добавляем
if el["description_2"]:
column_items.append(ft.Text(f"Доп. инфа: {el['description_2']}", size=12))
card = ft.Card(
content=ft.Container(
content=ft.Column(column_items),
padding=15
)
)
content_area.controls.append(card)
# Добавляем всё на страницу
page.add(
header_text,
ft.Divider(),
content_area
)
if __name__ == "__main__":
ft.run(main, view=ft.AppView.WEB_BROWSER)