Конечно! Давайте создадим приложение с использованием библиотеки Flet и реализуем функциональность, которая позволяет выполнять определенный код при выборе различных вкладок. Мы добавим три вкладки, и при выборе каждой из них будет отображаться текст или результат выполнения некоторого кода.
Вот пример того, как это может выглядеть:
```python
import flet as ft
def tab1_content():
return ft.Text("Это содержание первой вкладки.")
def tab2_content():
return ft.Text("Это содержание второй вкладки.")
def tab3_content():
return ft.Text("Это содержание третьей вкладки.")
def main(page: ft.Page):
# Функция для обновления содержания на странице при выборе вкладки
def update_tab_content(selected_index):
if selected_index == 0:
content.controls.append(tab1_content())
elif selected_index == 1:
content.controls.append(tab2_content())
elif selected_index == 2:
content.controls.append(tab3_content())
content.update()
# Контейнер для содержимого вкладки
content = ft.Column()
# Вкладки
t = ft.Tabs(
selected_index=0, # Начальная выбранная вкладка
animation_duration=300,
on_change=lambda e: update_tab_content(e.control.selected_index), # Обновляем содержание при изменении вкладки
tabs=[
ft.Tab(icon=ft.Icons.ADD_CHART, text="Вкладка 1"),
ft.Tab(icon=ft.Icons.SEARCH, text="Вкладка 2"),
ft.Tab(icon=ft.Icons.SETTINGS, text="Вкладка 3"),
],
expand=1,
)
# Сначала отображаем содержимое первой вкладки
update_tab_content(0)
# Добавляем элементы на страницу
page.add(t, content)
# Запуск приложения
ft.app(main)
```
### Объяснение кода:
1. **Импорт библиотеки**: Мы импортируем библиотеку `flet`.
2. **Функции для контента**: Мы создаем три функции (`tab1_content`, `tab2_content`, `tab3_content`), каждая из которых возвращает соответствующий текст для вкладки.
3. **Функция `main`**:
- Создает контейнер `content` для содержимого вкладок.
- Создает вкладки `t` и задает функцию обновления содержания при изменении выбранной вкладки через параметр `on_change`.
- Вызывает `update_tab_content` для инициализации содержимого первой вкладки при загрузке приложения.
- Добавляет вкладки и контейнер с содержимым на страницу.
4. **Запуск приложения**: В самом конце вызываем `ft.app(main)` для запуска приложения.
Теперь при переключении между вкладками будет отображаться соответствующее содержание. Вы можете модифицировать функции `tab1_content`, `tab2_content` и `tab3_content`, чтобы выполнять другой код или выводить различные элементы интерфейса.