Esistono buoni toolkit di widget UI per Pygame? [chiuso]


8

Esistono dei buoni e moderni toolkit di widget per Pygame? Ho esaminato PGU , ma apparentemente non è stato mantenuto.

Risposte:


11

No. Ogni anno qualcuno crea una nuova libreria UI di Pygame e poi la abbandona dopo alcune versioni, probabilmente una volta che si rende conto che scrivere layout dei pulsanti è facile ma scrivere una libreria UI completa è un vero lavoro. Il guitag sul sito di Pygame ne racconta alcune.


8

Nel gennaio 2011, ho esaminato cinque toolkit GUI per pygame e ho cercato di farli funzionare tutti con Python 3. I cinque erano: Albow, GooeyPy, PGU, pqGUI e sgc.

Non sono riuscito con GooeyPy , ma ho fatto funzionare gli altri quattro con Python 3. (Volevo provare anche il poutine, di Shandy Brown, ma non sono riuscito a trovarlo e ho completamente ignorato Ocemp.)

Sfortunatamente, Albow e Ocemp sembrano praticamente morti. Albow è stato aggiornato l'ultima volta nel 2009 e Ocemp è stato aggiornato l'ultima volta nel 2008. (Notare che la versione di Albow su pygame.org non è l'ultima.)

PGU (Phil's Pygame Utilities) è stato rilevato e mantenuto da Peter Rogers, e Victor Kam l'ha convertito per lo più in Python 3. È stato aggiornato l'ultima volta a gennaio 2012 e presumibilmente è migliorato da quando l'ho esaminato. (Nota che la versione di PGU su pygame.org non è la più recente.)

sgc era nuovo e ancora molto incompleto quando l'ho guardato. Tuttavia, è attualmente in fase di sviluppo attivo e potrebbe essere molto migliorato. (Nota che la versione di sgc su pygame.org non è la più recente.)

Ho passato ciascuno dei cinque attraverso un semplice contatore Lines-Of-Code per misurare le loro dimensioni:

Questi erano i risultati (a gennaio 2011):

    Codice Albow min = 2810, max = 4551 (max = 162% di min)
    Albow \ demo min = 453, max = 649

    GooeyPy \ gooeypy min = 2034, max = 3941 (max = 194% del min)
    GooeyPy \ esempi min = 178, max = 351

    pgu \ pgu min = 2910, max = 7047 (max = 242% di min)
    incl. pgu \ pgu \ gui min = 1678, max = 4638 (max = 276% del min)
    pgu \ esempi min = 822, max = 2527

    pqGUI.py min = 1586, max = 1834 (max = 116% del min)
    Esempio.py min = 178, max = 225

    sgc (incompleto) min = 889, max = 1243 (max = 140% del min)

In ogni caso, il numero "min" è più rappresentativo della "dimensione" del toolkit, poiché non conta spazi bianchi e commenti. Quando il numero "max" è molto vicino al numero minimo, significa che non c'è molto spazio bianco e non ci sono molti commenti nel codice. pqGUI lo esemplifica, poiché non ha quasi alcun commento (e neanche docstring), il che è un peccato, perché (IMO) ha creato gli elementi della GUI più belli.

Avvertenza importante: le dotstring non vengono conteggiate come commenti! Ciò rende PGU, sgc e GooeyPy, che hanno dotstring, sembrano più grassi e meno ben documentati di quanto non siano realmente, rispetto ad Albow e pqGUI, che mancano di dotstring.

Mi è piaciuta pqGUI perché mi piaceva l'aspetto dei widget che produce, ma non è supportato e non documentato e non sono riuscito a trovare l'autore.

Dei cinque, a partire da gennaio 2011, PGU era il chiaro leader. Ma non ero soddisfatto di tutti e cinque, quindi ho scritto il mio. (Nota: PGU e sgc sono stati entrambi aggiornati e presumibilmente migliorati, da quando li ho guardati.)

Per l'osservazione ironica di Joe Wreschnig (sopra), il mio toolkit GUI è incompleto, come tutti gli altri. Ma ci sono alcune cose da fare.

  • Funziona con Python 2.6, 2.7, 3.1, 3.2 e presumibilmente 3.3.
  • È basato su sprite e utilizza eventi pygame per la comunicazione, in modo che possa essere facilmente inserito in un programma pygame esistente, senza assumere il controllo del ciclo degli eventi. I widget sono sottoclassati da pygame.sprite.Sprite.
  • Supporta moduli, pulsanti, caselle di controllo, finestre di dialogo e finestre di dialogo modali e non modali, menu verticali, caselle di immissione testo e cursori (barre di scorrimento).
  • Gestisce senza problemi controlli / widget sovrapposti, spostando e ridimensionando widget e moduli all'interno dei moduli.

Tuttavia, manca alcuni importanti controlli che probabilmente vorrai, come le finestre di dialogo di apertura file / combo-box e le tabelle. I controlli esistenti sembrano belli, ma funzionalità come barre del titolo e barre di scorrimento sono numeri fissi di pixel in larghezza, piuttosto che in larghezza regolabile. Il codice è ben commentato e c'è un'app demo con esempi di utilizzo, ma non esiste una documentazione corretta su come usare. Inoltre, è pre-beta, quindi tutto è soggetto a modifiche.

I risultati del contatore della riga di codice sono:

    DavesGUI (con codice demo) min = 2267, max = 3055 (max = 135% del min)
     (senza codice demo) min = 2018, max = 2644 (max = 131% di min)
     (con commenti scritti) min = 1442, max = 2644 (max = 183% del min)

Se, nonostante queste limitazioni, qualcuno vuole provarlo, contattami via email. Chiedi informazioni su "DavesGUI". Il mio indirizzo email è qui: http://www.burtonsys.com/email/


1

Di recente ho visto pygtk usato con pygame e funziona davvero bene. Assicurati solo di utilizzare l'evento expose con il widget dell'area di disegno di gtk e di aggiornare i dati di pygame ad ogni passaggio attraverso il loop principale di gtk. Se vuoi che un toolkit gui completo funzioni all'interno di pygame, non accadrà, ma se vuoi un toolkit gui completo da usare con pygame, allora sei fortunato, è pygtk. Puoi anche usare gtk usando il linguaggio di programmazione C e importare ancora pygame come widget nell'area di disegno e aggiornare pygame in python se questo galleggia sulla tua barca e vuoi una velocità turbo. Perché la confusione, basta usare google e trovare la risposta, quindi implementarla, non difficile e senza problemi. A proposito pygame è davvero bello. Quei ragazzi ci hanno messo così tanto lavoro e funziona in modo così efficiente è sorprendente.


0

Ho aggiunto elementi GUI di base alla mia libreria GameEngine: http://aharrisbooks.net/pythonGame/ch10/ (Incluso in un libro sullo sviluppo di giochi in Python)

Ho creato elementi GUI molto semplici basati sullo sprite standard: un'etichetta, un pulsante, un'etichetta multilinea e una barra di scorrimento mini.

Questi strumenti sono piuttosto basilari, ma sono adeguati per molti usi. Naturalmente, la libreria è completamente open-source, quindi sentiti libero di modificarli se lo desideri. L'unico elemento dell'interfaccia utente che non ho aggiunto (ancora) era un widget di immissione testo. Questo perché il modello di eventi è molto più complesso per questo rispetto agli altri modelli e stavo per scadere.

Sentiti libero di giocarci (che tu usi il libro o meno) e fammi sapere se riscontri problemi. Proverò ad aiutare.

Ho video del mio corso disponibili su http://synapse.cs.iupui.edu/Mediasite/Catalog/

Guarda il corso N451. Questo è quello sullo sviluppo del gioco.


Veramente? "L' unico elemento dell'interfaccia utente"? Che dire di alberi, elenchi, barre dei menu, cursori, barre di avanzamento, spinner, caselle combinate, finestre ridimensionabili, riquadri ridimensionabili, widget rich-text e schede, solo per citarne alcuni? La tua libreria non è diversa dalla mezza dozzina di altre anche mai finite su pygame.org.

Wow. È stato un po 'arrabbiato, eh? Questo è l'unico elemento utente che desidero che non ho aggiunto. Posso costruire tutto quello che voglio. Non ho costruito le altre cose perché non ne ho bisogno. Sei libero di aggiungere i tuoi strumenti al mio framework (che è progettato per essere espandibile) o di creare il tuo toolkit. Se vuoi supportarmi per completare questo progetto, sono disposto a parlarne. Tuttavia, come la maggior parte degli sviluppatori, devo pagare le bollette, quindi i progetti su cui posso guadagnarmi da vivere ottengono la massima priorità.
Due del

Non è arrabbiato. Sto solo sottolineando che il tuo progetto non è diverso da PyUI o PGU. È un'API non mantenuta per disporre semplici pulsanti. Non è un "buono, moderno toolkit di widget".

Sono d'accordo con te sul fatto che la biblioteca completa non esiste (e ho pensato che le altre fossero troppo complesse) Penso che la risposta sia per te costruire la biblioteca che desideri piuttosto che respingere gli sforzi di coloro che hanno dato liberamente il loro lavorare per la comunità. La mia biblioteca è certamente minuscola, perché non avevo bisogno di nient'altro. Mi piacerebbe se volessi aggiungere le funzionalità che desideri a questa o a qualsiasi altra libreria, perché concordo che una libreria GUI "a tutti gli effetti" potrebbe essere utile. Tuttavia, i giochi di solito non hanno le stesse esigenze di altre app GUI.
Due pi,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.