Cheatsheet Flet — Riferimento rapido
pip install fletimport flet as ft
def main(page: ft.Page): page.title = "Titolo" page.add(ft.Text("Hello!"))
ft.app(target=main) # Finestra desktopft.app(target=main, view=ft.WEB_BROWSER) # BrowserPage (la pagina)
Section titled “Page (la pagina)”| Codice | Cosa fa |
|---|---|
page.title = "..." | Titolo finestra |
page.bgcolor = "..." | Sfondo |
page.padding = 20 | Spazio dai bordi |
page.add(comp1, comp2) | Aggiunge componenti |
page.controls | Lista componenti |
page.controls.clear() | Svuota tutto |
page.update() | Ridisegna la UI |
page.scroll = ft.ScrollMode.AUTO | Scroll automatico |
page.theme_mode = ft.ThemeMode.LIGHT/DARK | Tema |
page.go("/route") | Naviga a route |
page.views | Pila delle viste |
page.snack_bar = ft.SnackBar(...) | Notifica in basso |
page.dialog = ft.AlertDialog(...) | Dialogo modale |
page.overlay.append(...) | Componenti nascosti |
page.drawer = ft.NavigationDrawer(...) | Menu laterale |
Componenti base
Section titled “Componenti base”ft.Text("Ciao") # Testo sempliceft.Text("Testo", size=24) # Dimensioneft.Text("Testo", weight="bold") # Grassettoft.Text("Testo", color="blue") # Coloreft.Text("Testo", italic=True) # CorsivoButton
Section titled “Button”ft.ElevatedButton("Click", on_click=f) # 3Dft.FilledButton("Click", on_click=f) # Pienoft.OutlinedButton("Click", on_click=f) # Bordoft.TextButton("Click", on_click=f) # Testoft.IconButton(ft.icons.STAR, on_click=f) # IconaTextField
Section titled “TextField”ft.TextField(label="Nome") # Con etichettaft.TextField(hint_text="scrivi...") # Con suggerimentoft.TextField(value="testo") # Valore inizialeft.TextField(password=True) # Passwordft.TextField(multiline=True, max_lines=3) # Multi rigaft.TextField(prefix_icon=ft.icons.PERSON) # Icona a sinistraft.Icon(ft.icons.HOME) # Iconaft.Icon(ft.icons.STAR, size=40, color="amber")Immagine
Section titled “Immagine”ft.Image(src="url_della_foto", width=300, height=200)ft.Image(fit=ft.ImageFit.CONTAIN) # Adattaft.Image(fit=ft.ImageFit.COVER) # CopreLayout
Section titled “Layout”ft.Row([comp1, comp2]) # Orizzontaleft.Column([comp1, comp2]) # Verticaleft.Container(content=comp, padding=10) # Contenitoreft.Divider() # Linea separatriceft.ListView(spacing=10) # Lista scrollabileft.GridView(max_extent=150) # GrigliaProprietà layout
Section titled “Proprietà layout”ft.Row(alignment=ft.MainAxisAlignment.CENTER) # Centra rigaft.Row(spacing=20) # Spazio tra elementift.Container(padding=20, bgcolor="white") # Sfondoft.Container(border_radius=10) # Angoli arrotondatift.Container(shadow=ft.BoxShadow(blur_radius=5, color="grey")) # Ombraft.Container(width=300, height=200) # DimensioniEventi
Section titled “Eventi”def funzione(evento): evento.control # Componente che ha generato l'evento evento.control.value # Suo valore evento.data # Dati aggiuntivi page.update() # SEMPRE alla fine
ft.ElevatedButton("Click", on_click=funzione) # Clickft.ElevatedButton("Click", on_click=lambda e: print("click")) # Lambdaft.TextField(on_change=funzione) # Digitazioneft.TextField(on_submit=funzione) # Invio premutoft.Checkbox(on_change=funzione) # Cambio checkboxft.Switch(on_change=funzione) # Cambio switchft.Dropdown(on_change=funzione) # Cambio selezioneNavigazione
Section titled “Navigazione”page.on_route_change = route_change # Handler routepage.go("/home") # Vai a route
ft.View( # Schermata route="/home", appbar=ft.AppBar(title=ft.Text("Home"), bgcolor="blue"), controls=[ft.Text("Contenuto")], navigation_bar=ft.NavigationBar(...),)
page.views.clear() # Reset vistepage.views.append(ft.View(...)) # Aggiungi vistapage.views.pop() # Torna indietroAppBar
Section titled “AppBar”ft.AppBar( title=ft.Text("Titolo"), bgcolor="blue", color="white", leading=ft.IconButton(ft.icons.MENU, on_click=f), actions=[ ft.IconButton(ft.icons.SETTINGS, on_click=f), ],)Dialoghi e feedback
Section titled “Dialoghi e feedback”# SnackBar (notifica temporanea)page.snack_bar = ft.SnackBar(ft.Text("✅ OK"), open=True, bgcolor="green")page.update()
# AlertDialog (conferma)dialog = ft.AlertDialog( title=ft.Text("Conferma"), content=ft.Text("Sei sicuro?"), actions=[ft.TextButton("OK", on_click=lambda e: chiudi(dialog))],)page.dialog = dialogdialog.open = Truepage.update()Dati (JSON)
Section titled “Dati (JSON)”import jsonimport os
def carica_dati(file): if os.path.exists(file): with open(file, "r") as f: return json.load(f) return []
def salva_dati(file, dati): with open(file, "w") as f: json.dump(dati, f, indent=2)API HTTP
Section titled “API HTTP”import urllib.requestimport json
url = "https://api.example.com/data"with urllib.request.urlopen(url) as response: dati = json.loads(response.read().decode())import threadingimport time
def in_parallelo(): while True: time.sleep(1) # aggiorna UI page.update()
threading.Thread(target=in_parallelo, daemon=True).start()Build APK
Section titled “Build APK”flet build apk# APK in build/apk/