2011-12-01 14 views
24

Qual è la differenza tra questi 3? Per quanto ho capito, entrambi forniscono l'associazione ai curses che è la libreria C per l'interfaccia utente basata sul testo del terminale.Python ncurses, CDK, urwid differenza

Io attualmente non hanno alcuna conoscenza di una qualsiasi delle 3 e non ho mai usato maledizioni. Quale raccomanderesti? Ho sentito parlare di ncurses molte volte ma solo una o due volte su CDK (attraverso la ricerca) e non ho mai sentito parlare di urwid (credo).

risposta

25

quello che mi capita dopo aver guardato alcuni riferimenti sono:

  • ncurses: Si tratta di una versione del software gratuito di maledizioni, in modo da avere a che fare con tutti i dettagli di basso livello tipo.
  • pyCDK: Si tratta di una libreria di livello superiore che fornisce alcuni widget. Non ho usato questo, ma secondo la pagina del progetto sourceforge è rimasto non mantenuto per molto tempo (almeno il binding Python), quindi non andrei con questo.
  • urwid: Ho usato questo e ho da dire che è ancora un basso livello po '(è più un quadro di una libreria di widget), ma ancora molto utile e molto user-amichevole di maledizioni. Come framework per l'interfaccia utente ha tutto ciò che di solito ti aspetti come widget, eventi e un modo per controllare il layout dei widget. Alcune cose che direi sono duri con curses, ma sono facili con urwid sono: ridisegnare i widget quando il terminale viene ridimensionato e raccogliere input del mouse (clic su un pulsante, ad esempio).

Quindi la mia raccomandazione sarebbe quella di utilizzare urwid e se non soddisfa le vostre esigenze cercare altre alternative.

+2

Inoltre, Urwid gestisce l'input Unicode con garbo, che molte altre API della console non hanno. –

+0

Ho usato un paio di widget-toolkit come C++ Qt4, Java Swing/AWT, C# .Net, python tk ... tutti questi hanno in comune: una libreria di widget, contenitori per contenere altri widget, layout, eventi meccanismo di loop/asincrono. Il python incluso 'curses' non ha ciò che chiamerei le basi che voglio/ho bisogno (libreria di widget, contenitori, layout, meccanismo del ciclo di eventi). ||| 'urwid' d'altra parte ha le basi (libreria di widget, layout, meccanismo del ciclo degli eventi). E ha ottimi esempi, tutorial, documentazione in modo da andare rapidamente. –

3

Non ho usato nessuna delle librerie, ma sto supponendo che ti riferisci:

  • di Python incorporato curses modulo
  • pycdk, un'interfaccia Python per CDK
  • la biblioteca UI urwid console

Sono solo diverse librerie con lo stesso obiettivo: fornire un'API per un'interfaccia utente basata sulla console. Da un previous question, sembra che curses richiede più basso livello boilerplate. Una cosa da notare è che il modulo curses di Python è disponibile solo sotto Unix; se sei su Windows, potresti voler guardare il modulo Console scritto da Fredrik Lundh.

Entrambe le altre opzioni sembrano promettenti, anche se lo urwid sembra essere più organizzato per quanto riguarda lo sviluppo, ed è ancora in fase di sviluppo.