[PIPython] wx vs all the others [WAS: no subject]

Valentino Volonghi aka Dialtone dialtone
Gio 10 Mar 2005 15:11:37 CET


Giovanni Porcari wrote:

> Ciao a tutti
>
> dopo una lunga indecisione per la scelta di una GUI sto imboccando la 
> strada di wx.
> Mi sembra un buon prodotto e ben mantenuto.
> Ho letto però recentemente dei messaggi in lista di apprezzamento di 
> pygtk e quindi
> mi ritorna qualche dubbio.
> Vorrei quindi chiedere cortesemente ai supporter delle due librerie di 
> perdere qualche minuto
> del loro tempo per esprimere le ragioni della loro scelta e spiegare i 
> punti di forza e debolezza
> rispettivi. Credo che una ML serva anche a questo ;)
> Dimenticavo: per me la piattaforma principale è OSX.
> Ho valutato anche QT ma non mi ha convinto. Andrebbe messo in conto ?
>
> Ringrazio anticipatamente chi vorrà contribuire con il suo prezioso 
> parere ;)

wx e` una buona libreria ma con un'API decisamente brutta e poco 
pythonosa. Ha dalla sua il vantaggio di poter girare, quasi 
immodificata, su molte piattaforme. Questo comporta pero` anche che sia 
il piu` lento di tutti i toolkit esistenti in quanto si appoggia sulle 
librerie presenti nel sistema (Carbon, GTK, GTK2, MFC e via dicendo). Un 
poco carente di documentazione e attualmente e` in scrittura la nuova 
versione stabile.

pygtk e` MOLTO piu` piccolo di wx (wx sono 16MB contro i neanche 10 di 
gtk2+pygtk). Gira anche lui su molte piattaforme ma sotto OSX necessita 
dell'uso dell'X11 di apple. Questo significa che, sotto OSX, risultera` 
piu` lenta delle wx. L'architettura delle GTK+ e` di gran lunga la 
migliore architettura tra tutti i toolkit grafici anche se l'API non e` 
particolarmente pythonica. Esistono pero` alcuni pacchetti 'aggiuntivi' 
che possono renderla decisamente piu` pythonica. Come wx (e meglio di 
wx) dispone del tool per creare interfacce grafiche usando un file XML 
in formato glade (il nome di wxGlade infatti deriva da questo glade). Il 
miglior designer di UI in pyGTK e` gazpacho, un prodotto molto recente 
sviluppato da Lorenzo Gil Sanchez (maintainer delle pygtk) scritto in 
python e molto flessibile. Le GTK+ inoltre supportano perfettamente 
unicode e i font con scrittura da destra a sinistra. Si possono inoltre 
scrivere widget nuovi direttamente in python oltre che creare e gestire 
segnali nuovi, sempre usando python. Non so pero` quanto di questo sia 
disponibile anche con le wx. Un po` povere di widget complessi su 
piattaforme diverse da GNOME (dove hanno librerie anche per 
masterizzare), ad esempio non hanno un data grid se non quella scritta 
dagli autori di gazpacho che non saprei dire quanto sia portabile. 
Documentazione sovrabbondante sia in italiano che in inglese con 
grandissima ricchezza nella raccolta di FAQ.

QT ottime librerie, la loro API e` decisamente piu` pulita e pythonica 
di tutte le altre due. Hanno pero` una licenza decisamente pessima, 
particolarmente pessima per prodotti commerciali. Le QT4 (che usciranno 
durante l'anno) avranno un'architettura molto molto simile alle GTK+2 e 
una licenza migliore per windows. Come le wx e le gtk+ girano su 
tantissime architetture ma diversamente dalle GTK+, e analogamente alle 
wx girano perfettamente sotto OSX senza necessita` di utilizzare X11. 
Sono ricchissime di widget, particolarmente di widget data driven. Anche 
queste gestiscono benissimo unicode e sono fornite con un designer di 
ottima qualita`. Non credo che queste abbiano la possibilita` di creare 
l'interfaccia grafica usando XML anche se il file generato dal designer 
e` appunto un file XML che andra` parsato con pyuic che generera` il 
codice python necessario.

Inoltre mi sento di dover citare il progetto piu` promettente. Prende 
spunto da wxpython nell'appoggiarsi alla libreria sottostante, ma e` 
scritto interamente in python e dall'autore di pyrex. PyGUI e` 
indubbiamente il miglior toolkit disponibile con la sfortuna che Greg 
Erwing non ha molto tempo da dedicargli e non ha ancora molti widget. Si 
tratta, a mio parere, del toolkit migliore per sviluppare applicazioni 
data driven.

Inoltre ancora, per OSX esiste l'ottimo pyObjC da usare assieme a 
Interface Builder, specialmente nella versione ora in sviluppo, offre 
tantissime funzionalita` utilissime per creare software nativo per OSX. 
Anche questo e` un ottimo toolkit per gestire applicazioni data driven 
essendo molto simile, come concetti, a Glade. L'API e` molto pythonica 
anche se e` un po` condizionata dal suo doversi interfacciare con 
objective c.

Bisognerebbe dare una possibilita` a un po` tutti i toolkit per averne 
un'idea chiara. Tutti quanti (a parte PyGUI sfortunatamente) sono pronti 
per realizzare applicazioni perfettamente funzionanti e di qualita`. 
Alcuni necessitano di uno sforzo di progettazione superiore come wx, 
altri risultano piu` scomodi da usare sotto OSX come pygtk.

Un ultima menzione a riguardo dell'integrazione con twisted:
Il migliore in assoluto sono le gtk. che si integrano perfettamente con 
twisted.
Quindi le qt e cocoa che funzionano con il 'supporto', infine le wx che 
necessitano di girare in un altro thread per funzionare correttamente, 
una ricetta per usare twisted e le wx in 2 thread indipendenti e` 
presente nel cookbook di python sul sito della activestate.

-- 
Valentino Volonghi aka Dialtone
Now Running MacOSX 10.3.8
Blog: http://vvolonghi.blogspot.com
http://weever.berlios.de



More information about the Python mailing list