In questa lezione vedremo una breve panoramica dei framework che consentono di costruire interfacce grafiche in Python.
Nelle lezioni precedenti abbiamo visto come costruire applicazioni in Python utilizzabili dalla riga di comando. L'utilizzo di un framework per la costruzione di interfacce grafiche risulterà necessario per fornire un aspetto professionale, ed aumentare l'usabilità delle applicazioni.
I framework per costruire GUI (Graphical User Interface) in Python possono essere suddivisi in due categorie:
- Cross-platform_ totalmente portabili, conferiscono (quasi) sempre lo stesso aspetto a tutte le applicazioni, indipendentemente dal sistema operativo che le esegue;
- Platform-specific: utilizzano elementi visuali forniti dal particolare sistema operativo che esegue l'interfaccia.
Tra le caratteristiche principali che andrebbero valutate quando si intende scegliere il framework più adatto alla nostra applicazione Python, bisognerebbe valutare:
- Widget: è importante conoscere quali strumenti visuali mette a disposizione il framework (es. bottoni, menu, canvas, ecc...)
per comprendere fin da subito se è ciò che fa per la nostra applicazione; - Licenza: il tipo di licenza offerta dal framework che intendiamo utilizzare è fondamentale, specialmente nel caso di applicazioni di natura commerciali;
- IDE per lo sviluppo: l'esistenza di uno strumento IDE risulta fondamentale per abbattere i tempi di sviluppo e test. Quando possibile, dovremo sempre scegliere un framework con una buona IDE a supporto del processo di costruzione dell'interfaccia;
- Supporto da parte del produttore: molti dei framework esistenti sul web sono caduti in disuso, e spesso la ragione è il mancato supporto da parte del produttore, la mancanza di aggiornamenti o la mancanza di un IDE.
Tra le decine e decine di frameworks per lo sviluppo di GUI in Python, vedremo adesso quelli che sono maggiormente utilizzati/supportati dai produttori. I framework con scarso supporto o caduti in disuso non verranno trattati in questa sede. Tra quelli osservati in questa breve panoramica, approfondiremo (nelle lezioni successive) quelli più utilizzati e meglio supportati.
Framework cross-platform
I framework cross-platform hanno la caratteristica di essere portabili su diversi sistemi operativi, consentendo agli sviluppatori di scrivere codice indipendente dalle librerie grafiche del sistema in esecuzione. Nella maggior parte dei casi, ciò implica che l'aspetto finale dell'applicazione rimarrà lo stesso, indipendentemente dal sistema operativo in esecuzione. I framework cross-platform che vedremo nella seguente tabella, in alcuni casi, possono anche appoggiarsi su librerie grafiche native: questo è un vantaggio in termini di efficienza dell'applicazione grafica, che sfrutterà appieno le capacità del sistema. D'altro canto, però, l'aspetto finale delle applicazioni cambierà (seppur in modo limitato) a seconda del sistema operativo su cui esse saranno eseguite.
Nome | Home page | Descrizione | IDE consigliato |
---|---|---|---|
GuiZero | [1] | Un wrapper per la libreria Tkinter che consente la creazione di semplici GUI. Il paradigma di programmazione è molto semplice e pensato per lo sviluppo anche da parte dei bambini. Supporta Windows, Mac, Linux e Raspberry Pi. |
Eclipse+PyDev |
Kivy | [2] | Una libreria che fornisce oltre 20 diversi widgets. Utilizza le OpenGL e gira su Linux, Windows, OS X, iOS, Raspberry Pi e Android. Totalmente gratuita, ed utilizzabile secondo i termini della licenza MIT, anche per fini commerciali. |
Eclipse+PyDev |
PyForms | [3] | Una libreria compatibile con Python 2 e Python 3, che consente lo sviluppo di GUI su Windows, Linux e Mac OS X. Disponibile secondo la licenza MIT. Le principali caratteristiche riguardano:
|
Non disponibile |
PyGObject | [4] | Un package per Python che consente di utilizzare i cosiddetti "GObject", ossia le utility fornite da GTK+, GStreamer, WebKitGTK, GLib, GIO, ecc... Il suo supporto è esteso a Linux, Windows e MacOS ed è compatibile con Python v2/v2. La licenza di utilizo è la LGPL v2.1+. |
Wing Python IDE |
PyQt | [5] | Prodotta dalla società Riverbank, supporta Python v2/v3. Sostanzialmente è un wrapper che consente di utilizzare le famose librerie Qt in Python. Il supporto è esteso a Windows, OS X, Linux, iOS ed Android. Implementa oltre 1000 classi, per la nuova versione PyQt5, che è attualmente supportata dalla compagnia produttrice delle librerie stesse. Le licenze disponibili sono di due tipo: GNU GPL v3 e la licenza commerciale della Riverbank. |
|
Pywebview | [6] | Un wrapper per il componente webview, compatibile con Python v2/v3. Consente di visualizzare contenuti HTML all'interno della GUI stessa, facilitando dunque l'inserimento di contenuti web senza richiedere l'utilizzo di un browser. Particolarmente utile nello sviluppo di applicazioni lightweight, il suo utilizzo può essere facilmente combinato con web frameworks quali Flask o Bottle. Il wrapper utilizza componenti nativi per la creazione delle GUI, sia su Windows che su Mac OS X, che per Linux. La licenza disponibile è la BSD. |
Non disponibile |
Tkinter | [7] | Il framework più "essenziale" per la creazione di GUI in Python. Supporta sia Python 2 che 3, ed è integrato all'interno del linguaggio stesso. Non è particolarmente evoluto e consigliato solamente per GUI molto semplici. Se cercate la potenza di un web framework abbandonatene l'utilizzo. |
|
Vtk | [8] | Una libreria open-source, capace di fornire primitive per l' informatica grafica, elaborazione delle immagini, visione artificiale e visualizzazione dei dati. Fornisce una miriade di widgets, inclusi quelli per la navigazione 3D degli oggetti mostrati. Compatibile con Windows, Mac, Unix, fornito come strumento open-source, regolato dalla licenza BSD. |
Non disponibile |
WxPython | [9] | Una libreria per la creazione di GUI, che agisce da wrapper per i cosiddetti "wxWidgets", scritti in C++. WxPython è totalmente open source, e regolato dalla licenza wxWindows Library Licence. Al momento, le piattaforme supportate sono: Windows, Mac OS X e Linux. Unica pecca, manca il supporto per Python 3. |
Framework platform-specific
I framework platform-specific non sono molto diffusi, in quanto le applicazioni risultanti sono utilizzabili solo una categoria di sistemi operativi. Nella seguente tabella vedremo le caratteristiche di due framework che stanno comunque ottenendo una discreta diffusione nell'ambito dei sistemi Windows ed Android:
Nome | Home page | Descrizione | IDE consigliato |
---|---|---|---|
IronPython | [10] | Un framework che consente di utilizzare la sintassi di Python, con gli strumenti grafici offerti da .NET framework (incluso silverlight lato browser). Chiaramente funzionerà solo sui sistemi Windows, ed è compatibile solamente con Python 2.7. Distribuito con licenza Apache 2.0. Interessante l'add-on Python tools che consente lo sviluppo rapido ed il testing tramite il famoso IDE Visual Studio. |
Python tools |
Chaquopy | [11] | Una libreria per Android Studio, che consente di mixare codice Python e Java in una singola applicazione. Il punto di forza è il supporto completo alle Android Api. Compatibile con Python v2/v3, fornito con licenza open-source e commerciale. |
Android Studio |