GUI per Python: panoramica dei toolkit disponibili

La mia personale selezione, ma direi anche quella più condivisa, è che la creazione di GUI in Python offra oggi questi toolkit alternativi:

  • Tkinter: è la libreria considerata lo standard di fatto per Python in quanto essa viene inclusa come modulo nativo, unica tra quelle che vedremo, nella maggior parte delle distribuzioni per i vari sistemi operativi in cui esiste questo linguaggio. La libreria nasce come toolkit di supporto al linguaggio Tcl ma si è poi affermata come compagno ideale di molti altri linguaggi dinamici come Perl, Ruby o PHP. Ha avuto a lungo fama di essere un po’ superata “esteticamente” e di avere poche widgets rispetto ad altre soluzioni più moderne. Per questo motivo sono nate nel tempo varie estensioni alla libreria (Pmw, Tix e ttk queste ultime diventate modulo standard in Python 3). Tk è disponibile con licenza BSD. Il sito Tcl/Tk
  • wxPython: è l’interfaccia Python alle classi definite nelle librerie wxWidgets scritte originariamente per il linguaggio C++. Si tratta di una soluzione molto completa e sofisticata, multipiattaforma (Windows, OS x, Linux) disponibile con licenza LGPL. Data la sua “origine” dal C++ molti ravvedono in wxPython una sintassi poco conforme allo stile python; richiede inoltre uno stile di programmazione OO e senza dubbio offre una interfaccia più a basso livello rispetto a Tkinter richiedendo al programmatore un certo impegno nell’apprendimento. Tale complessità offre in cambio una interfaccia molto potente, con numerosissime widgets dall’aspetto molto “nativo” in tutti i sistemi operativi per cui questo toolkit viene rilasciato. Esistono GUI builder per wxPython. Il sito wxPython.
  • PyGTK: sono l’interfaccia Python alle librerie GTK+ originalmente utilizzate da GNOME per il desktop linux. Pieno supporto di Windows e Linux ma solo parziale per OS x. La licenza è LGPL e personalmente trovo questo toolkit relativamente semplice e naturale ma, forse a causa della sua documentazione alquanto sparsa e frammentata (non mi risulta alcun libro edito sull’argomento) è sicuramente la soluzione meno usata tra quelle qui elencate. Esistono GUI builder per PyGTK. Il sito di PyGTK
  • PyQT: Interfaccia Python alle librerie QT (di proprietà Nokia), probabilmente il toolkit più usato in Python dopo Tk e wxPython. Nata per Linux è in seguito divenuta disponibile anche per Windows e OS X: ricchissima libreria anche se ovviamente di una certa complessità. Sono utilizzate dal team di sviluppo KDE per il desktop linux. Esistono GUI builder per PyQT. Il difetto principale che si riconosce a PyQT è il tipo di licenza: la sua licenza GPL permette la distribuzione di applicazioni solo open source altrimenti deve essere acquistata una licenza commerciale. Le librerie sono mantenute e sviluppate da Riverbank.Il sito PyQT
  • PySide: Altra interfaccia Python alle librerie QT. E’ il nuovo arrivato tra i vari toolkit disponibili per Python, la versione 1.0 è stata rilasciata nel marzo 2011 ed è ora giunto alla versione 1.1.0. Dichiara di supportare tutte le piattaforme di PyQT ed è stato creato principalmente per disporre di un accesso alle QT con licenza LGPL permettendo dunque anche la distribuzione di applicazione closed source. Le librerie sono sviluppate e mantenute direttamente da Nokia che le ha create all’interno della propria divisione dedicata a Maemo. Pur essendo stata sviluppata da zero, PySide viene giudicata “abbastanza” compatibile con PyQT nel senso che normalmente sono necessari relativamente piccoli cambiamenti per passare da una all’altra. Potete leggere in questa pagina cosa dice Mark Summerfield, uno dei massimi esperti di PyQT e autore di un libro fondamentale, sul porting delle applicazioni in PySide. Il sito dedicato a PySide

Si conclude così questa prima parte dedicata alla panoramica degli strumenti più realisticamente a disposizione dello sviluppatore Python che volesse creare una GUI.

Le puntate successive, una per ciascuna libreria elencata, saranno dedicate a dare un modesto assaggio di come i vari toolkit “disegnino” l’interfaccia grafica nonchè a dare indicazioni sulla documentazione disponibile.

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.