2010-03-26 10 views
5

Vorrei aggiungere alcune funzionalità interattive a un'applicazione CLI Python che ho scritto che memorizza i dati in un database SQLite3. Attualmente, la mia app legge un determinato tipo di file, analizza e analizza, inserisce i dati di analisi nel db e sputa i record formattati su stdout (che in genere metto un pipe in un file). Ci sono nell'ordine di un milione di record in questo file. Idealmente, mi piacerebbe eliminare del tutto la situazione del file di testo e fare un ciclo solo dopo la parte "analizza e analizza", visualizzando il valore di una schermata di record e consentendo all'utente di scorrere le pagine e immettere alcuni comandi che modificano i record. La parte di backend che so come fare.Creazione di un'interfaccia cercapersone console "less" per il database pysqlite3

Qualcuno può suggerire un buon punto di partenza per creare quel frontend del cercapersone direttamente nella console (come il cercapersone "less"), attraverso ncurses o qualche altro sistema?

+0

Perché non convogliare l'output su 'less'? Perché scrivere la tua versione di 'less'? –

+1

http://stackoverflow.com/questions/2213060/how-to-create-a-scrollable-screen-in-text-mode-with-python –

+0

Desidero poter modificare i record dal cercapersone, quindi a meno che non può collegare le funzioni di less e usarle come callback, non si adatta alle mie esigenze. Grazie per i suggerimenti però. – Eric

risposta

1

Si potrebbe voler dare un'occhiata a urwid. È una libreria dell'interfaccia utente della console per Python. Il examples dovrebbe essere più che sufficiente per convincerti che questo è quello che vuoi, se vuoi davvero passare all'interfaccia utente della console di testo.

Preferisco usare qualcosa come pygtk invece.

+0

Wow, è molto bello. Mi piacciono tutte le opzioni di colorazione! Per semplicità probabilmente inizierò con le maledizioni, ma presto farò sicuramente qualcosa con urwid! Gtk sarebbe fantastico, ma adoro il look retrò di Urwid. Grazie! – Eric

+0

@Eric: urwid usa anche curses, non devi scrivere tu stesso la maggior parte del codice. – nosklo

1

Dopo aver guardato intorno un po ', ho scoperto che meno e altri cercapersone usano effettivamente curses. Quando pensavo alle maledizioni, ho sempre immaginato l'interfaccia blu con i menu e l'interazione con il mouse. Questi sono componenti aggiuntivi della libreria per curses, che offrono esattamente la funzionalità di controllo di selezione e modifica di base che sto cercando.

Tutorial on Python Curses Programming

Curses Programming with Python

sul backend, quando l'utente tenta di muovere il cursore sopra o sotto i record attualmente visualizzati, avrò SQLite portami la prossima serie appropriata di record per la visualizzazione.

+0

Ehi, qualche successo? –

+0

Sì, ho avuto successo con esso. Qualcosa di notevole sull'esperienza, ma non correlato alla parte maledetta di esso: inizialmente, pensavo che le query del database SQLite non sarebbero state in grado di tenere il passo se l'utente avesse spostato il cursore sopra o sotto lo schermo (come nel tenere premuto una freccia chiave). Questo era vero quando ho usato una chiave primaria artificiale per indicizzare le mie voci. Il recupero è stato piuttosto lento. Nel momento in cui sono passato all'indicizzazione in base all'ordine degli elementi nel database (erano indirizzi di memoria, quindi non erano possibili duplicati), potevo scorrere in tempo reale senza problemi. – Eric

+0

Sembra pitone.org ha spostato le loro maledizioni come, rompendo il mio secondo link. Ecco la nuova posizione: http://docs.python.org/dev/howto/curses.html – Eric

Problemi correlati