Un framework open-source per realizzare il sogno di ogni pythonista: "usare solo Python". Un'avventura nella progettazione di applicazioni cross platform e una analisi di cosa è in grado di offrirci il mondo open-source.
3. • Framework Python Open Source per lo sviluppo rapido di
applicazioni basate su interfaccia grafica.
• Cross Platoform (Linux, Windows, macOS, Android, iOS e Raspberry
Pi).
• Integrazione nativa di input e protocolli per gli ambienti di
destinazione più comuni (WM_Touch, WM_Pen, Mac OS X Trackpad e
Magic Mouse, Mtdev, Linux Kernel HID, TUIO).
• Engine grafico basato su OpenGL ES2, scritto in C utilizzando Cython,
ed sostenuto da SDL2.
• Gratuito ed utilizzabile per scopi commerciali.
Kivy
4. Python
• Linguaggio di programmazione ad alto
livello.
• Object-oriented, aspect-oriented,
functional.
• Type sistem dinamico.
• Facile da imparare.
• Librerie e pacchetti a non finire.
Ha avuto già qualche utilizzo
nell’ambito mobile…
• PyS60 per Symbian
• Python CE per Windows
Mobile
• WinRT per Windows 8
• Py4A
• SL4A
5. Architettura
Kivy consiste in un insieme di blocchi funzionali che permettono
modularità e astrazione dal basso all’alto livello.
Core Providers e Input Providers garantiscono l’utilizzo delle API
specifiche in base al sistema di esecuzione
L’API di gestione grafica è un’astrazione di OpenGL. Permette la
creazione di oggetti grafici senza dover scrivere OpenGL code.
Le funzionalità Core permettono l’utilizzo delle feature più comuni:
• Clock per schedulare timer events;
• Cache
• Gesture detection (è possibile addestrarlo per riconoscere le
proprie gesture personalizzate)
• Kivy Language
• Properties
6. Architettura
Il modulo UIX contiene:
• Widgets: elementi UI che permettono di aggiungere
funzionalità alla propria applicazione.
• Layouts: contenitori di widgets per impostare posizione e
grandezza dei vari elementi.
Moduli Esterni che permettono di aggiungere funzionalità out of
the box ad una propria applicazione.
Eventi gestiti direttamente da input utente (come tap o click) o generate e
distribuiti a widget nestati o alla parte logica.
8. Kv Language
• Permette di creare il proprio «widget tree» dichiarando le
«rules» separando la parte logica da quella di interfaccia
grafica
• Le rules utilizzano le stesse regole di indentazione di Python.
• Viene definito un widget root, oppure una classe, atto a
contenere le regole del file.
• Permette di definire i proprio Widget estendendo quelli già
esistenti.
E’ in grado di comprendere il contesto applicativo e quello
locale tramite l’utilizzo di tre parole chiave:
• app: fa riferimento all’istanza della propria applicazione.
• root: fa riferimento al widget/template che definisce il file
Kv.
• self: fa sempre riferimento al widget corrente.
9. Kv Language
Riduce o annulla la scrittura di codice Python lato logico per
definire gli oggetti grafici.
Python Kv
10. Eventi
• Scheduling di eventi senza dover interrompere l’esecuzione del
main loop dell’applicazione
• Scheduling di eventi su determinate condizioni o comandi
• Scheduling di eventi basati su widget:
• Property event: cambio di posizione, dimensioni…
• Widget-defined event: evento generato al click, tap,
inserimento di testo…
12. Properties
• Creazione diretta di un evento associato ad uno specifico
attributo.
• Al cambiamento del valore, sia da interfaccia grafica che dalla
parte logica, viene lanciato un evento
• Sono strettamente legate al tipo di dato al quale devono
essere in ascolto. Per questo, possono essere dei seguenti tipi:
• StringProperty
• NumericProperty
• BoundedNumericProperty
• ObjectProperty
• DictProperty
• ListProperty
• OptionProperty
• AliasProperty
• BooleanProperty
• ReferenceListProperty
15. Progetto di esempio
Prima schermata: login
• Credenziali errate
• Credenziali corrette
• Seconda schermata: geolocator
• Immissione del luogo da ricercare
• Se trovato, visualizzazione mappa
• Comandi aggiuntivi per la mappa
16. Conclusioni
• Ambiente flessibile, in via di espansione e attivamente
aggiornato. Riesce a seguire bene le numerose possibilità che
Python ha da offrire.
• Dispone di un buon supporto dalla community tramite il
progetto «Garden».
• La documentazione è ricca, ben scritta ed esaustiva ma viene
aggiornata leggermente troppo tardi rispetto al rilascio della
nuova versione.
• La parte di rilascio è ancora macchinosa e adatta ad utenti
MOLTO consapevoli.
17. Link Utili
Azure Function per coordinate geografiche
https://www.giuneco.tech/azure-functions-in-python/
https://github.com/giocasin/GiunecoTech.AzureFunctionsPython
Progetto di esempio
https://github.com/giocasin/GiunecoTech.KivyPythonNGUI_Framework
Documentazione Kivy
https://kivy.org/doc/stable/