Kivy è un framework open source rilasciato sotto Licenza MIT utilizzato per lo sviluppo di applicazioni multi-touch e interfacce utente (UI) interattive. È basato su Python e supporta lo sviluppo su diverse piattaforme tra cui Linux, Windows, macOS, Android e iOS.
Inizialmente nato come evoluzione del progetto PyMT (Python Multi-Touch), Kivy, ha ampliato le funzionalità di PyMT, migliorando il supporto multipiattaforma e aggiungendo nuovi strumenti e widget per creare interfacce utente più avanzate e interattive.
Kivy è il principale framework sviluppato dalla comunità Kivy. Nel 2012, Kivy ha ricevuto una sovvenzione di 5000 dollari dalla Python Software Foundation per portare il framework su Python 3.3. Kivy supporta anche il Raspberry Pi, grazie a un finanziamento ottenuto tramite Bountysource, una piattaforma di crowdfunding per progetti open-source.
Kivy è un framework completo che fornisce tutti gli elementi necessari per creare un'applicazione. Include widget e vari componenti per lo sviluppo di interfacce utente interattive e dinamiche. Tra le principali componenti si trovano:
- Una collezione di widget come pulsanti, etichette, caselle di testo, slider, e molto altro
- Diversi layout per organizzare i widget in modo flessibile e responsivo.
- Supporto per eventi touch, gesture e multi-touch, ideale per dispositivi mobili e tablet.
- OpenGL ES 2 per creare interfacce grafiche avanzate e animazioni fluide.
- Supporto per la riproduzione di audio e video all'interno delle applicazioni.
- Kv, una sorta di linguaggio intermedio utilizzato per progettare widget personalizzati
Esempio di codice
Ecco il classico esempio di programma "Hello world" con un singolo pulsante:
from kivy.app import App from kivy.uix.button import Button class TestApp(App): def build(self): return Button(text="Hello World") TestApp().run()
Linguaggio KV
Il linguaggio KV è un linguaggio di markup simile a CSS, creato appositamente per Kivy. Viene utilizzato per definire l'aspetto e il comportamento delle interfacce utente in modo dichiarativo, separando la logica dell'applicazione dal design grafico.
Ad esempio, per creare una finestra di caricamento che includa un file browser e due pulsanti denominati "Annulla" e "Carica", si potrebbe procedere in due fasi:
- Creazione del widget. Qui si definisce la logica di base e la struttura del widget utilizzando il linguaggio di programmazione Python.
- Costruire l'interfaccia utente in Kv. In questa fase si utilizza il linguaggio Kv per definire l'aspetto grafico e il layout del widget creato in Python
Codice del file main.py:
class LoadDialog(FloatLayout): def load(self, filename): pass def cancel(self): pass
Codice in linguaggio Kv associato:
#:kivy 1.11.1 <LoadDialog>: BoxLayout: size: root.size pos: root.pos orientation: "vertical" FileChooserListView: id: filechooser BoxLayout: size_hint_y: None height: 30 Button: text: "Cancel" on_release: root.cancel() Button: text: "Load" on_release: root.load(filechooser.path, filechooser.selection)
In alternativa, il layout e i pulsanti possono essere caricati direttamente all'interno del file "main.py".
Partecipazione al "Google Summer of Code"
Kivy ha partecipato alle seguenti edizioni del Google Summer of Code (GSoC) sotto l'egida della Python Software Foundation:
- 2014
- 2015
- 2016
- 2017
Altri progetti
- Wikimedia Commons contiene immagini o altri file su Kivy
