GUI per Python: panoramica dei toolkit disponibili

Quali sono le alternative per creare oggi una GUI in Python?

Una cosa abbastanza sorprendente per chi proviene da linguaggi Microsoft, come Visual Basic, è che l’interfaccia grafica in Python è una questione totalmente separata dal linguaggio stesso e demandata all’uso di appositi toolkit. Questo non è in realtà strano poichè tutti i linguaggi di programmazione classici seguono questa impostazione: dare insieme al linguaggio anche le API per il disegno della interfaccia grafica significherebbe “legare” il linguaggio ad un determinato sistema operativo (vedi appunto Visual Studio per Windows) e questo spesso non è un vincolo tollerabile.

Una delle domande ricorrenti da parte di utenti VB/Visual Studio che si avvicinano a Python è infatti “come faccio a creare una interfaccia a finestre, con buttons, labels e combo box? “. La risposta a questa domanda non è univoca: d’altra parte la marea di informazioni a disposizione di chi sia alla ricerca della soluzione ideale per Python, non aiuta la scelta. Vedere ad esempio il numero di alternative elencate qui.

Per prima cosa dobbiamo liberare il campo da un equivoco di fondo: la costruzione di una interfaccia grafica non richiede necessariamente la presenza di un GUI builder, cioè di una applicazione grafica che permetta la costruzione “visuale” della interfaccia stessa. Visual Studio è il classico esempio di GUI builder: la finestra grafica viene disegnata visualmente trascinando i “controlli” (nell’ambiente Microsoft questa è il termine usato, in altri ambienti chiamati invece “widgets”) ovvero tutti i vari elementi della interfaccia, buttons, labels ecc. Il GUI builder procede poi in automatico alla creazione del codice che andrà generalmente personalizzato attraverso l’editazione di opportune proprietà del controllo. Nulla vieta però di creare l’interfaccia grafica direttamente da codice, senza passare per un GUI builder che ha pur sempre dei limiti in quanto a flessibilità e opzioni disponibili. Questa “creazione da codice” si può naturalmente fare anche da VS (e talvolta è obbligata in quanto non tutti i linguaggi supportati da VS possiedono anche un GUI builder corrispondente).

In Python solo alcuni dei toolkit, come vedremo, possiedono anche un GUI builder anche se l’uso di quest’ultimi non è necessariamente preferibile alla scrittura del codice manuale, anzi.

Quello che vorrei fare in questa sede è una sintesi, limitandomi alle opzioni più praticabili e supportate: poi resta naturalmente allo sviluppatore scegliere lo strumento più idoneo al suo stile, alle sue conoscenze e alla sua applicazione.

About the Author

Carlo Bazzo
Carlo Bazzo è fondatore di Epysoft, una start up tecnologica con sede a Treviso e CTO di Hdemo Network Business Solutions. Puoi contattare Carlo Bazzo su Linkedin.