81 lines
2.9 KiB
Python
81 lines
2.9 KiB
Python
import flet as ft
|
|
|
|
from gallery.models import Example
|
|
|
|
|
|
def text_fields() -> ft.Control:
|
|
return ft.Column(
|
|
controls=[
|
|
ft.TextField(label="Имя", hint_text="Алексей", prefix_icon=ft.Icons.PERSON),
|
|
ft.TextField(label="Пароль", password=True, can_reveal_password=True),
|
|
ft.TextField(label="Комментарий", multiline=True, min_lines=2, max_lines=4),
|
|
],
|
|
spacing=12,
|
|
)
|
|
|
|
|
|
def dropdowns() -> ft.Control:
|
|
return ft.Dropdown(
|
|
label="Среда",
|
|
value="web",
|
|
options=[
|
|
ft.DropdownOption(key="web", text="Web"),
|
|
ft.DropdownOption(key="android", text="Android"),
|
|
ft.DropdownOption(key="desktop", text="Desktop"),
|
|
],
|
|
width=300,
|
|
)
|
|
|
|
|
|
def selection_controls() -> ft.Control:
|
|
return ft.Column(
|
|
controls=[
|
|
ft.Checkbox("Получать обновления", value=True),
|
|
ft.Switch(label="Автоматическая тема", value=False),
|
|
ft.RadioGroup(
|
|
value="comfortable",
|
|
content=ft.Row(
|
|
controls=[
|
|
ft.Radio(value="compact", label="Компактно"),
|
|
ft.Radio(value="comfortable", label="Удобно"),
|
|
]
|
|
),
|
|
),
|
|
]
|
|
)
|
|
|
|
|
|
def sliders() -> ft.Control:
|
|
value_label = ft.Text("Громкость: 40")
|
|
|
|
def changed(e: ft.Event[ft.Slider]) -> None:
|
|
value_label.value = f"Громкость: {int(e.control.value)}"
|
|
value_label.update()
|
|
|
|
return ft.Column(
|
|
controls=[
|
|
value_label,
|
|
ft.Slider(value=40, min=0, max=100, divisions=10, label="{value}", on_change=changed),
|
|
ft.RangeSlider(start_value=20, end_value=75, min=0, max=100, divisions=20),
|
|
]
|
|
)
|
|
|
|
|
|
def segmented_choice() -> ft.Control:
|
|
return ft.SegmentedButton(
|
|
segments=[
|
|
ft.Segment(value="day", label="День", icon=ft.Icons.LIGHT_MODE),
|
|
ft.Segment(value="week", label="Неделя", icon=ft.Icons.DATE_RANGE),
|
|
ft.Segment(value="month", label="Месяц", icon=ft.Icons.CALENDAR_MONTH),
|
|
],
|
|
selected=["week"],
|
|
)
|
|
|
|
|
|
EXAMPLES = [
|
|
Example("text-fields", "Text fields", "Ввод текста, пароля и многострочного значения.", "Ввод", text_fields),
|
|
Example("dropdowns", "Dropdown", "Выбор одного значения из меню.", "Ввод", dropdowns),
|
|
Example("selection-controls", "Checkbox, switch и radio", "Булевы и взаимоисключающие варианты.", "Ввод", selection_controls),
|
|
Example("sliders", "Sliders", "Одиночный и диапазонный выбор чисел.", "Ввод", sliders),
|
|
Example("segmented", "Segmented button", "Компактный выбор режима.", "Ввод", segmented_choice),
|
|
]
|