[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