This repository was archived by the owner on Dec 24, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathexample-2.py
More file actions
107 lines (96 loc) · 3.32 KB
/
example-2.py
File metadata and controls
107 lines (96 loc) · 3.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
import flet as ft
from data import desserts
import flet_datatable2 as ftd
def main(page: ft.Page):
page.vertical_alignment = ft.MainAxisAlignment.CENTER
page.horizontal_alignment = ft.CrossAxisAlignment.CENTER
def select_row(e: ft.ControlEvent):
print("on_select_row")
e.control.selected = not e.control.selected
e.control.update()
def sort_column(e: ft.DataColumnSortEvent):
print(f"Sorting column {e.column_index}, ascending={e.ascending}")
def all_selected(e: ft.ControlEvent):
print("All selected")
def get_data_columns():
data_columns = [
ftd.DataColumn2(
label=ft.Text("Name"),
size=ftd.DataColumnSize.L,
on_sort=sort_column,
heading_row_alignment=ft.MainAxisAlignment.START,
),
ftd.DataColumn2(
label=ft.Text("Calories"),
on_sort=sort_column,
numeric=True,
heading_row_alignment=ft.MainAxisAlignment.END,
),
ftd.DataColumn2(
label=ft.Text("Fat"),
on_sort=sort_column,
numeric=True,
),
ftd.DataColumn2(
label=ft.Text("Carbs"),
on_sort=sort_column,
numeric=True,
),
ftd.DataColumn2(
label=ft.Text("Protein"),
on_sort=sort_column,
numeric=True,
),
ftd.DataColumn2(
label=ft.Text("Sodium"),
on_sort=sort_column,
numeric=True,
),
ftd.DataColumn2(
label=ft.Text("Calcium"),
on_sort=sort_column,
numeric=True,
),
ftd.DataColumn2(
label=ft.Text("Iron"),
on_sort=sort_column,
numeric=True,
),
]
return data_columns
def get_data_rows(desserts):
data_rows = []
for dessert in desserts:
data_rows.append(
ftd.DataRow2(
specific_row_height=50,
on_select_change=select_row,
cells=[
ft.DataCell(content=ft.Text(dessert.name)),
ft.DataCell(content=ft.Text(dessert.calories)),
ft.DataCell(content=ft.Text(dessert.fat)),
ft.DataCell(content=ft.Text(dessert.carbs)),
ft.DataCell(content=ft.Text(dessert.protein)),
ft.DataCell(content=ft.Text(dessert.sodium)),
ft.DataCell(content=ft.Text(dessert.calcium)),
ft.DataCell(content=ft.Text(dessert.iron)),
],
)
)
return data_rows
page.add(
dt := ftd.DataTable2(
show_checkbox_column=True,
expand=True,
column_spacing=0,
heading_row_color=ft.Colors.SECONDARY_CONTAINER,
horizontal_margin=12,
sort_ascending=True,
bottom_margin=10,
min_width=600,
on_select_all=all_selected,
columns=get_data_columns(),
rows=get_data_rows(desserts),
),
)
ft.run(main)