PDA

View Full Version : [Python] Sviluppo interfaccia grafica


kwb
15-07-2014, 12:06
Ciao!
Sto sviluppando un'applicazione banale nel tempo libero per una pura comodità.
Quello che però mi piacerebbe fare ( che non ho mai fatto ne visto ) è implementare un'interfaccia grafica ( GUI ) al mio piccolo programmino.
Mi sono documentato rapidamente e ho trovato guy2py (https://code.google.com/p/gui2py/) che permette di creare interfacce grafiche con i click del mouse, se ho ben capito. :) Il che, vista l'entità dell'applicazione, porterebbe ad uno sviluppo piuttosto rapido secondo me. E inoltre è cross-platform, quindi compatibile con Windows, Linux e Mac OS.

Poi oggi mi sono imbattuto in Kivy (http://kivy.org) che scopro funzionare anche su Android e iOS, però non permettere di "disegnare" l'interfaccia grafica a differenza di guy2py.

Posto che non so nulla di interfacce grafiche, quale dei due consigliereste?

ingframin
16-07-2014, 10:57
Ciao!
Sto sviluppando un'applicazione banale nel tempo libero per una pura comodità.
Quello che però mi piacerebbe fare ( che non ho mai fatto ne visto ) è implementare un'interfaccia grafica ( GUI ) al mio piccolo programmino.
Mi sono documentato rapidamente e ho trovato guy2py (https://code.google.com/p/gui2py/) che permette di creare interfacce grafiche con i click del mouse, se ho ben capito. :) Il che, vista l'entità dell'applicazione, porterebbe ad uno sviluppo piuttosto rapido secondo me. E inoltre è cross-platform, quindi compatibile con Windows, Linux e Mac OS.

Poi oggi mi sono imbattuto in Kivy (http://kivy.org) che scopro funzionare anche su Android e iOS, però non permettere di "disegnare" l'interfaccia grafica a differenza di guy2py.

Posto che non so nulla di interfacce grafiche, quale dei due consigliereste?

guipy è basato su wxpython che non è python compatibile (phoenix è un esperimento, ancora è pieno di bug e manca di nulerose features!) mentre kivy gira con tutto.
Ma se vuoi il designer grafico perché non usare pyQt o PySide abbinato a Qt Creator?
http://qt-project.org/wiki/QtCreator_and_PySide

Guarda anche:
http://zetcode.com/ ci sono un sacco di tutorial

kwb
16-07-2014, 11:32
Ho trovato un tutorial su YouTube che spiega un po' kivy. Quello che mi affascina è la possibilità di sviluppare senza apparenti complicazioni per tutte le piattaforme..
Wxpython ho scoperto solo dopo che non era compatibile con python 3 e quindi ho lasciato perdere.
Pyqt se ho ben capito crea app compatibili su Linux Mac e Windows. Però mi piacerebbe provare a sviluppare con kivy..
Possibile che kivy non abbia un editor grafico?

Freaxxx
16-07-2014, 13:16
l'ultima volta che provai kivy di cross-platform e funzionale non aveva proprio nulla.

è il solito progetto python da quattro lire spacciato per chissà che da persone che neanche lo hanno testato.

l'ultima volta controllai anche la wiki e vi erano menzionati neanche una decina di device Android ufficialmente supportati ( la front page riportava comunque il software come "cross-platform" ) e molti di questi avevano il SoC in comune, in pratica lo stesso hardware. Inoltre vi era una esplicita menzione al fatto che ci fossero problemi su alcuni SoC Adreno.

Fatti un favore e evita qualsiasi immondizia Python-style che tanto cross-platform non è e non è neanche ufficialmente supportata da nessuno dei grandi player, neanche la fondazione Python rilascia Python per Android.

Python per Android non esiste e probabilmente non esisterà mai visto il punto al quale siamo arrivati.

kwb
16-07-2014, 15:31
l'ultima volta che provai kivy di cross-platform e funzionale non aveva proprio nulla.

è il solito progetto python da quattro lire spacciato per chissà che da persone che neanche lo hanno testato.

l'ultima volta controllai anche la wiki e vi erano menzionati neanche una decina di device Android ufficialmente supportati ( la front page riportava comunque il software come "cross-platform" ) e molti di questi avevano il SoC in comune, in pratica lo stesso hardware. Inoltre vi era una esplicita menzione al fatto che ci fossero problemi su alcuni SoC Adreno.

Fatti un favore e evita qualsiasi immondizia Python-style che tanto cross-platform non è e non è neanche ufficialmente supportata da nessuno dei grandi player, neanche la fondazione Python rilascia Python per Android.

Python per Android non esiste e probabilmente non esisterà mai visto il punto al quale siamo arrivati.
Beh ok, so che per programmare Android si usa java, ma mi faceva gola l'idea de "un codice per domarli tutti".
Solo che odio veramente tanto java..
E adoro python..
L'idea era quella di iniziare con qualcosa di facile per avvicinarsi al mondo delle gui e kivy mi sembra abbastanza facile..

cdimauro
16-07-2014, 19:36
E fai benissimo: usa Kivy e vedrai che ti divertirai a sviluppare applicazioni cross-platform con Python, con un occhio di riguardo per il mobile.
l'ultima volta che provai kivy di cross-platform e funzionale non aveva proprio nulla.
Io è da un po' di anni che lo seguo, e non sono della stessa opinione.
è il solito progetto python da quattro lire spacciato per chissà che da persone che neanche lo hanno testato.
Ho avuto la fortuna anche di parlare con gli sviluppatori a un'edizione di EuroPython, dove lo mostrarono "in real-time", e... funzionava! Ma tu guarda...
l'ultima volta controllai anche la wiki e vi erano menzionati neanche una decina di device Android ufficialmente supportati ( la front page riportava comunque il software come "cross-platform" ) e molti di questi avevano il SoC in comune, in pratica lo stesso hardware. Inoltre vi era una esplicita menzione al fatto che ci fossero problemi su alcuni SoC Adreno.
Eccola qui (http://kivy.org/docs/guide/android.html) la pagina in questione, e come puoi vedere non riportano l'elenco di device supportati, ma di quelli TESTATI.

Mentre per gli altri:
"If your device is not on the list, that does not mean that it is not supported. If that is the case, please try running Kivy and if it succeeds, let us know so that we can update this list. Note, however, that your device has to support at least OpenGL 2.0 ES."

La situazione, dunque, è completamente diversa da quella che hai descritto...
Fatti un favore e evita qualsiasi immondizia Python-style che tanto cross-platform non è
Fai un favore tu all'umanità: evita di riportare l'immondizia che esce dalla tua bocca.

Ci sono un sacco di progetti che usano Python e sono cross-platform. Kivy è uno dei tanti, ma non è il solo, come peraltro già qualcuno aveva riportato.
e non è neanche ufficialmente supportata da nessuno dei grandi player,
Ognuno usa Python per quel che gli serve.
neanche la fondazione Python rilascia Python per Android.
E perché dovrebbe? Android è Linux-based, e Python per Linux esiste. Per cui è stato facile portare Python su Android, ed esistono già da tempo diversi progetti. Eccone uno (http://code.google.com/p/android-scripting/) e un altro (http://code.google.com/p/python-for-android/) ancora, che sono i più diffusi. In particolare al primo contribuisce anche qualche sviluppatore di Google.
Python per Android non esiste e probabilmente non esisterà mai visto il punto al quale siamo arrivati.
Mettiti l'anima in pace: esiste già da parecchio tempo, e viene usato proficuamente. Ovviamente da chi certe cose le sa...

kwb
16-07-2014, 20:38
BONI :D

Ad essere onesti, aspettavo la tua risposta cdimauro :sofico: .
Detto ciò, per questa mia app non intendo renderla pubblica quindi basta che funzioni sul mio telefono ( e sicuramente funzionerà ).
Tra l'altro, esistono altri framework che supportano Android con python ( che però vadano anche su desktop )?
Vorrei fare la scelta giusta all'inizio e non arrivare a metà progetto per accorgermi che il framework scelto non fa al caso mio..:p

cdimauro
16-07-2014, 20:45
Ce ne sono altri, ma non li conosco. Kivy è, a mio avviso, quello messo meglio per quello che devi fare.

kwb
16-07-2014, 20:45
Bene, mi concentrerò su Kivy allora!
Grazie a tutti! ;)

dddomodossola
09-01-2015, 18:40
Ciao kwb, se sei interessato a qualche altra soluzione per creare GUI in python che possano funzionare anche su android, puoi provare una libreria a cui sto lavorando. La trovi al seguente link: https://github.com/dddomodossola/gui

È puro python, in pochi kbytes di files.

cdimauro
09-01-2015, 19:45
In effetti è un framework molto piccolo e semplice. Ricorda Pyjs (http://pyjs.org/).

Alcuni consigli:
- cerca di adottare la coding-convention (https://www.python.org/dev/peps/pep-0008) degli sviluppatori Python;
- migliora la tua conoscenza di Python, perché per diversi aspetti il codice che scrivi non è "pythonico";
- cerca di ampliare il numero di widget a disposizione.

dddomodossola
09-01-2015, 20:36
In effetti è un framework molto piccolo e semplice. Ricorda Pyjs (http://pyjs.org/).

Alcuni consigli:
- cerca di adottare la coding-convention (https://www.python.org/dev/peps/pep-0008) degli sviluppatori Python;
- migliora la tua conoscenza di Python, perché per diversi aspetti il codice che scrivi non è "pythonico";
- cerca di ampliare il numero di widget a disposizione.

Grazie per i preziosi consigli. Hai notato subito che programmo python da poco tempo. ;-)
Ovviamente è una versione preliminare ma può risultare utile per piccoli software, soprattutto per il fatto che include e utilizza un webserver accessibile dai dispositivi presenti sulla stessa rete. Così per esempio, un programma su PC può essere accessibile da un tablet e viceversa.

cdimauro
09-01-2015, 21:35
Sì, l'avevo capito, e proprio per questo il progetto è molto interessante. In passato ho lavorato con Pyjs, ma è troppo complesso, pesante, e lento; questo sembra l'esatto opposto, anche se è agli inizi (ma confrontando i due progetti non credo che la complessità crescerà).

Perché non prepari un talk e lo presenti alla prossima PyCon? Qui (https://www.pycon.it/it/call-for-proposals/) il Call for Paper, fresco fresco di pubblicazione. Sarebbe un ottimo modo per far conoscere il tuo progetto a una platea più vasta, raccogliere più feedback, e pure farti conoscere in ambiente Python. ;)

dddomodossola
09-01-2015, 22:19
Proposta molto interessante :) . Anche perché per poter andare avanti con il progetto ( ad esempio con lo sviluppo dei widget ) ho bisogno che qualcuno ( e una platea di programmatori python è perfetta ) provi ad usarlo e mi dia consigli a riguardo. Nonché qualcuno che possa documentare il tutto. Vediamo un po se riesco a ritagliasrmi un po di tempo dal lavoro.

cdimauro
09-01-2015, 22:39
Non ci sarebbe platea migliore. PyCon è la seconda conferenza europea per numero di partecipanti; prima c'è solo EuroPython, per ovvi motivi.

OoZic
10-01-2015, 00:26
curiosita:

leggo che l interfaccia creata da kivy e' accelerata da GPU, sapete se il discorso e' valido per un Raspberry (ARM)?

All'OP invece ti consiglierei sei in futuro ti capita ancora d fare qualcosa con una GUI dove la base e' html dai un occhiata a node-webkit che e' ottimo
https://github.com/rogerwang/node-webkit

cdimauro
10-01-2015, 07:26
La complessità, così, salirebbe molto. Inoltre ci sono versioni separate per s.o. e architettura. Il vantaggio della GUI di dddomodossola è, almeno per ora, l'estrema semplicità e il fatto che sia già di base compatibile con qualunque cosa.

Per quanto riguarda Kivy, è basato su OpenGL. Per cui se su Raspberry OpenGL è accelerata, lo sarà anche la GUI di Kivy.

ingframin
12-01-2015, 05:26
La complessità, così, salirebbe molto. Inoltre ci sono versioni separate per s.o. e architettura. Il vantaggio della GUI di dddomodossola è, almeno per ora, l'estrema semplicità e il fatto che sia già di base compatibile con qualunque cosa.

Per quanto riguarda Kivy, è basato su OpenGL. Per cui se su Raspberry OpenGL è accelerata, lo sarà anche la GUI di Kivy.

Confermo he Raspberry Pi è OpenGL ES compatibile.
Mi sembra versione 2.0...


Che pensi di fare col raspberry pi?
Io ho in mente un progettino coi sensori di temperatura e umidità per misurare i parametri ambientali del frigorifero :D

cdimauro
12-01-2015, 06:16
Io niente. Al momento sto lavorando ad altro, sempre in Python ma qualcosa che riguarda la mia "casa madre", in vista della PyCon. :fagiano:

dddomodossola
22-01-2015, 15:01
Io niente. Al momento sto lavorando ad altro, sempre in Python ma qualcosa che riguarda la mia "casa madre", in vista della PyCon. :fagiano:

Bene cdimauro, mi hai convinto ed ho inviato la proposta di talk al PyCon. Vi presento la mia GUI. :D

cdimauro
22-01-2015, 20:45
Bene cdimauro, mi hai convinto ed ho inviato la proposta di talk al PyCon. Vi presento la mia GUI. :D
Ottimo! Spero che non si sovrapponga col mio talk. :stordita: