Newsgroup: it.comp.macintosh
Titolo: Framework per GUI

Ciao a tutti e' un po' di tempo che vado documentandomi e volevo avere
il vostro parere.
Se doveste sviluppare un applicazione (hobbistica) quale framework
utilizzereste per la GUI ? l'uso sarebbe primariamente sotto OsX ma non
guasterebbe certo la portabilita'.
Raccontatemi un po' i vostri pareri / esperienze al riguardo.
Pregi e difetti delle varie soliuzioni.
Grazie
-- 
Ciao
Fabio

 wrote:

Non ho ancora provato Qt su Aqua, ma mi dicono che e` bello; so per
certo che lo e` su Windows e Linux, e su ogni OS implementa il look
specifico.  Se vuoi rilasciare in GPL su Mac e/o Linux et similia, sei a
cavallo; per rilasci non-GPL e/o su Windows, le licenze di Qt invece
costano (purtroppo).  A parte il costo delle licenze secondo me e` il
meglio.
Se il costo delle licenze Qt e` un problema, la seconda scelta per lo
sviluppo cross-platform secondo me dovrebbe cadere su wxWindows, che
adotta l'approccio alternativo di "rivestire" i widget originali di
ciascuna piattaforma nei suoi + astratti.  Tutto gratis, anche se lo usi
per farci programmi commerciali.  Purtroppo non ha strumenti di 'screen
painting' paragonabili all'eccellente Qt Designer.
Terza scelta, a mio parere, GTK, se non da` problemi di licenza (GPL).
Lo "screen painter", glade, e` ottimo.  Non so pero` se giri in nativo
su Mac -- io ho istallato la versione per X e anche quella qualche
casino la da`, sigh.
Ci sono molti altri toolkit cross-platform, ma non credo che nessuno
supporti BENE il Mac, ahime`.
Se rinunci al cross-platfom, la scelta ovvia dovrebbe essere Cocoa, mi
sembra...
Alex


1) Cocoa: ottimo, non c'e` che dire. Veloce, potente, ottime
caratteristiche. Facile da usare. Purtroppo e` quanto di meno
crossplatform possiamo immaginare.
2) QT C++. relativamente facili. estremamente portabili, ma meno
integrate nel resto dell'OS (nn ho mai provato a distribuire un
eseguibile a chi non le avesse... ne` a farne uno statico...)
3) wxwindow + quello che vuoi. Estremamente portabili... estremamente
poco integrate con Panther (o per lo meno nemmeno vagamente ai livelli
fi Cocoa). qui potrei sbagliare perche` non ci ho mai fatto nulla ;)
-- 
#!/usr/bin/rik0
for whom the bell trolls?

 fi Cocoa). qui potrei sbagliare perche` non ci ho mai fatto nulla ;)
wxwindows + python qui (wxpython, si chiama). molto fico, l'aspetto non 
è proprio quello di un cocoa (o carbon) nativi ma insomma, non si può 
aver tutto dalla vita. se scarichi il python e lo ricompili in modalità 
framework (utile sotto os x) ti ritrovi anche un programmino che fa un 
delizioso "package" contenente il tuo programma. la fregatura sta nel 
fatto che non ti ci copia i moduli del python che servono, quindi non è 
ridistribuibile così come te lo fa. (ma devo smanettarci un po').
in pratica io sto scrivendo un programma che avrà come target l'utenza 
windows, e lo sto scrivendo su os x. ogni tanto lo provo sul windows 98 
:) (e con windows puoi fare proprio un .exe + .dll di quello che serve, 
usando py2exe).
-- 
Jollino - per rispondere togli il freno a mano
http://www.chieti.ch
 - la community di Chieti e dei teatini

 fi Cocoa). qui potrei sbagliare perche` non ci ho mai fatto nulla ;)
Concordo con l'estremamente poco integrate, ho visto che nella versione
2.5 in lavorazione, tra i flag dello script di configure hanno aggiunto
uno per usare Cocoa al posto di Carbon sotto Mac, l'ultima volta non mi
compilava ma almeno e' un buon segno che qualcuno ci stia lavorando.
Grazie per i consigli
-- 
Ciao
Fabio

 ridistribuibile così come te lo fa. (ma devo smanettarci un po').
Si ma sia wxWindows che la sua estensione Python sono parecchio grezzi
sotto Mac. Le GUI che ho visto, anche con wxWin 2.5, sono piene si
sbavature, sovrapposizioni e sono parecchio crashabili ...
-- 
Ciao
Fabio

 supporti BENE il Mac, ahime`.
-- 
Ciao
Fabio

 usando py2exe).
Senza dubbio, ma perche` un .app su/per Mac dovrebbe essere inferiore a
un .exe + .dll su Win...?
Alex

Visto che il Python doveva farla da padrone nel mio programmino ero
quasi tentato di usare Jython cosi' avrei avuto tutta la portabilita'
necessaria e avrei usato swing per le GUI ma mi son sorte due domande: 
1 - il progetto jython e' ancora attivo ? ho visto che e' fermo alla
versione 2.2 da un po' di tempo.
2 - La velocita' di esecuzione e' molto penalizzata rispetto
all'interprete scritto in C?
Grazie
-- 
Ciao
Fabio

 all'interprete scritto in C?
non so quanto, ma di sicuro lo è: aggiungi un ULTERIORE livello tra il 
programma e l'hardware...


 un .exe + .dll su Win...?
Vedi sopra :)
Su windows, con py2exe, hai un .exe vero e proprio e una serie di file 
(una dll e altri file sparsi, che sinceramente non so se servano... non 
ho fatto molte prove). Basta inviare quei file al destinatario e questi 
puň eseguire il programma anche senza aver installato Python o i moduli 
di terze parti che hai usato nel tuo programma. Con i bundle creati da 
BuildApplet non si puň.


 bridge per python (
pyobjc.sf.net
) e funziona ormai abbastanza bene.
ma vuoi vedere che fra te, il Jollino e Alex mi convincete a riprovare a
dare un occhio al Python?
_dio cosa ho detto... non ero io, e se ero io, non ero in me_
_effettivamente fra 50 minuti ho un compito di topologia e v. complessa_
-- 
#!/bin/rik0               | Seasons don't fear the reaper
for whom the bell trolls? | Nor do the wind, the sun or the rain
                          | (BOC)

 _effettivamente fra 50 minuti ho un compito di topologia e v. complessa_
cedi al lato oscuro Luke ...
-- 
Ciao
Fabio

 all'interprete scritto in C?
Le due espressioni "swing" e "velocita` di esecuzione" sono mutualmente
contraddittorie.  Swing e` la GUI piu` lenta che si sia mai vista sulla
faccia della terra.  Non e` un problema di Jython, ma di Java stesso.
Se usi una macchina cosi` potente che Swing appare responsivo, l'uso di
Jython piuttosto che Java o Python nativo dovrebbe essere indifferente,
a meno che tu non lo stia usando per applicazioni numericamente
intensive.
Se ti interessa girare a buona velocita` su macchine di fascia
medio-bassa, scordati Swing, ahime`...:-(.
Alex

 BuildApplet non si può.
E dunque, ripeto, "interessa l'articolo"?  Magari riesco a interessarci
anche Anna, la mia fidanzata (ci sposiamo a luglio, subito prima di
OSCON, e ci facciamo OSCON come luna di miele...!!!-) -- e` una
Pythonista di vaglia (non committer del progetto Python, perche` di C
non sa ne` le interessa, ma sulla programmazione in Python puro, e
ancora di piu` sulla didattica di Python, mi capita non di rado di
imparare qualcosa da lei...!), ma sinora non sono ancora riuscito a
"sedurla" relativamente al nuovo Mac (sul quale, da Linuxiana di ferro,
mi prende anzi in giro a sangue...:-).  Visto che il packaging e` uno
dei suoi cavalli di battaglia, chissa`, potrebbe essere l'esca...!-)
Alex

 _effettivamente fra 50 minuti ho un compito di topologia e v. complessa_
PS
Diciamo che facciamo uno scambio di esperienze, io ho appena ordinato su
internet un manualone sul Lisp :-)
(e' un mio limite ma facci un sacco di fatica a studiare sullo schermo)
-- 
Ciao
Fabio

 Alex
Come sempre grazie per le interessanti info.
-- 
Ciao
Fabio

 immagino...
Diciamo di sì, ma non so bene come funzioni py2exe quindi non sono 
sicuro.


 Come sempre grazie per le interessanti info.
Prego!
Alex

 (e' un mio limite ma facci un sacco di fatica a studiare sullo schermo)
io ci ho qui sotto mano il Common Lisp di Guy Steele...
quasi illegibile ;) ho bisogno di un bel po' di tempo prima di
dedicarmici seriamente...
e in lista ho Cocoa Programming di Anguish e una rilettura completa di
Programming Perl. Solo sul versante linguaggi di programmazione.
Poi mi rifaro` l'Hopcroft/Ullman per automi e calcolabilita`... e poi
basta perche` devo anche studiare che oggi mi hanno mezzo trombato ad un
esame...


 qui finisce che INTERLNG si divide :)
dove accade sta cosa?
/me che e` incazzato come un apicella di suo e che un bel flame lo
tirerebbe su ;)



:D


 sicuro.
py2exe fa del suo meglio, ma su Windows non puoi fisicamente "bundlare"
le DLL nello stesso file dell'EXE (puoi fare uno ZIP o simili, ma andra`
scompattato per poterlo eseguire).  In un bundle Mac ci metti quel che
vuoi, naturalmente.
Ma mi sembra che bundlebuilder faccia GIA` quello che tu chiedi.  La
documentazione e` a 
http://www.python.org/cgi-bin/moinmoin/BundleBuilder
e dice che, una volta che hai scritto un canonico buildapp.py per la tua
applicazione, puoi costruire un'applet (che dipende dall'esistenza di
una istallazione di Python) con "python buildapp.py build", ma anche
un'applicazione standalone semplicemente aggiungendo il flag
"-standalone" prima del verbo "build".  La stessa URL porta anche info
su altre opzioni, tipo -strip, comunque dice anche di usare un -help per
avere la lista delle opzioni.
Infine, sempre sull'URL gia` citata, c'e` un sostanziale esempio di
buildapp.py per uno standalone complicato, che include wxPython, visto
che, come dicono i commenti, "bundlebuilder non e` ancora in grado di
scoprire quali librerie condivise sono richieste dalla tua applicazione,
quindi in questo caso sto aggiungendo le librerie di wxPython a mano";
nonche` una promessa che in futuro bundlebuilder imparera` come scoprire
e incorporare anche le librerie condivise.
C'e` qualcosa di cio` che e` documentato a detta URL che non ti
funziona?  O qualche funziionalita` che ti e` indispensabile (a parte la
comodita` di non dover specificare esplicitamente le librerie condivise
da includere, che e` gia` promessa per il futuro) e risulta mancante?
Grazie,
Alex

 Ma mi sembra che bundlebuilder faccia GIA` quello che tu chiedi.  
Stasera lo provo e ti faccio sapere :) Magari ti scrivo in mail cosě non 
rompiamo le scatole qui...


 esame...
Allegro a me hanno trombato senza la mezza salvezza ...
Pero' in arrivo per tirarmi su ci sono il manualozzo sui Design Patterns
di Gamma e "come leggere il sole 24 ore" ultimamente ho la fissa di
voler capirci qualcosa di economia.
-- 
Ciao
Fabio


beh no... mi sembra assurdo iscrivermi per insultare della gente...
e poi il mio spagnolo ultimamente e` poco fluente...


 Allegro a me hanno trombato senza la mezza salvezza ...
stamattina ho scoperto che anche a me mi hanno trombato.
e ho anche scoperto che in realta` il compito lo sapevo fare _quasi_
alla perfezione. 
Al che mi chiedo perche` accidentimi sono fatto prendere dal panico...


 e poi il mio spagnolo ultimamente e` poco fluente...
infatti è interlingua, non spagnolo
www.interlingua.com
 è tuo amico


 
www.interlingua.com
 č tuo amico
dai... fammi un breve riassunto di cosa e` interlingua che non ho voglia
di leggermi il tutto ;)


 Al che mi chiedo perche` accidentimi sono fatto prendere dal panico...
Allegro il mio compito era una cosa molto molto onesta una scimmi con
una penna l'avrebbe passato, se non fosse che mi sono classificato
appena sotto il lemure nella scala evolutiva sbagliando una matrice
gigantesca (4 x 4) piena di numeri esorbitanti (non penso ci fosse l'8)
e di calcoli impossibili ( addizioni e qualche sottrazione). Il problema
e' che 2h di compito erano basate su quella matrice . . .
-- 
Ciao
Fabio

 e' che 2h di compito erano basate su quella matrice . . .
ma che fai nella vita?
una matrice 4 x 4 e` una matrice di per se piccola, ma assurdamente
grande da trattare a mano. Nn vedo il pro. ;)
questo se era Algebra Lineare...
se invece era un qualche altro esame in cui la matrice saltava fuori per
i fatti suoi (esempio Catene di Markov finite, una catena di Markov di 4
stati e` relativamente frequente, e per calcolare la misura invariante
devi risolvere appunto un sistema lineare di rango 4 -- effettivamente
la matrice ha rango 3, ma poi devi aggiungere una condizione aggiuntiva,
quindi trovi con un sistema di 5 equazioni, di cui una linearmente
dipendente dalle altre 4 e 4 variabili).
f/up impostato.


Forse e' un ingenuita' irrealizzabile, ma non esiste / sarebbe possibile
creare un layer per programmare GUI generico in Python, poi da
piattaforma in piattaforma mi scelgo quale GUI usare e lascio al mio
layer la traduzione dei miei comandi in qualcosa di specifico.
Parlo senza conoscenza di programmazione su molte GUI pero' i controlli
fondamentali sono sempre quelli (salvo alcuni rari casi) e anche le
tecniche con cui vengono gestiti gli eventi non mi sembrano poi cosi'
incompatibili (rinnovo la mia dichiarazione di ingoranza).
Sto delirando ?
-- 
Ciao
Fabio

 layer la traduzione dei miei comandi in qualcosa di specifico.
wxPython, che è il modulo di 'transito' per wxWindows, che fa proprio 
questo. :)
www.wxwindows.org
www.wxpython.org


 di leggermi il tutto ;)
una lingua ausiliaria sviluppata negli anni 50 da un gruppo di linguisti 
che hanno cercato le radici e le forme comuni alle lingue 'occidentali' 
piů diffuse. ti conviene leggerlo perché io non ho voglia di scriverlo...


 più diffuse. ti conviene leggerlo perché io non ho voglia di scriverlo...
beh, ho capito il concetto... si legge abbastanza bene... 
suppongo che tu te la sia imparata pure a scrivere...


 wrote:

Tutt'altro, anzi hai descritto esattamente il progetto anygui che
avevamo appunto cominciato un paio d'anni fa, e penso stia ancora su
sourgeforge all'ovvia URL 
http://anygui.sf.net
 .  Astraendo a
sufficienza dalle varie GUI supportate dai suoi back-end, anygui
permette, pur nello stato molto incompleto in cui si trova, di
programamre un'UI in grado di funzionare anche appoggiata su curses o
HTML o simili in alternativa a wx, tkinter ecc ecc (bella magari non
sara`, questo e` un altro problema).
La ragione principale per cui anygui e` un po' in stallo e` che il capo
progetto, Magnus Lie Hetland, si e` preso un po' di tempo per finire il
PhD, scrivere un ottimo libro (Istant Python, APress) e simili
distrazioni.  Ma non c'e` nessun particolare impedimento tecnico a
riprendere e completare il progetto, se qualcuno riaccende l'entusiasmo
di Magnus.  Senza un paladino entusiasta, progetti simili non procedono
(non e` il tipo di cosa di cui un programmatore possa avere disperato e
urgente bisogno per cui se la fa e basta, piuttosto una "idea
sfiziosa"... e per quelle, a portarle a termine, ci vuole anzitutto
passione ed entusiasmo).
Alex

 
www.wxpython.org
No io volevo qualcosa che stesse sopra wxPython, hai provato wxPython
sotto Os X ? e' pieno di sbavature sovrapposizioni e comportamenti
strani quando ridimensioni le GUI ... c'e' ancora lavoro da fare direi
...
Sarebbe bello programmare e poi dirgli bene sei su linux ? usa Qt! sei
su mac ? usa Cocoa se su win ? usa wxWindows
una cosa del genere, pero' come ho detto e' forse il delirio di un
newbie.
-- 
Ciao
Fabio

 questo. :)
No, non esattamente: wxPython usa _widget_ che sono uno strato sottile
su quelli nativi di ogni piattaforma (invece di reimplementarseli in
modo ottimizzato, come GTK o Qt fanno), ma una GUI toolkit e` molto di
piu` di una collezione di widget.  Non penso che sia neppure
concettualmente possibile implementare wx via HTTP/HTML, o curses, o
puro testo, ecc, come anygui (in teoria, ma un pochino a livello certo
ancora molto prototipale) supporta.
Alex