[Python] Non blocking input.

Gabriele Battaglia iz4apu a libero.it
Lun 13 Nov 2017 13:46:30 CET


Ciao a tutti.
Ho bisogno di leggere l'input da tastiera, senza bloccare il flusso del 
programma, in uno script di Python3, che gira sul terminale.
L'idea è quella di realizzare uno script multipiattaforma. Dopo aver 
sperimentato senza successo varie soluzioni e moduli, sto provando ora 
curses, di cui ho trovato un porting per Windows, qui: 
https://www.lfd.uci.edu/~gohlke/pythonlibs/

Mi serve che il programma faccia delle cose, quando l'utente preme un 
tasto e che l'azione parta immediatamente, senza aspettare l'invio, come 
succede usando input. Inoltre, il flusso deve continuare a girare perchè 
ci sono altri eventi, legati allo scorrere del tempo, che devono accadere.

Partendo da 0 nell'uso di curses, fatico a capirne la filosofia di 
funzionamento. Ho visto il classico esempio di come si legge la tastiera:

while True:
     c = stdscr.getch()
     if c == ord('p'):
         PrintDocument()
     elif c == ord('q'):
         break  # Exit the while loop
     elif c == curses.KEY_HOME:
         x = y = 0
Ma onestamente non la capisco perchè l'esempio non è completo. Il modulo 
curses, sembra non avere un metodo stdscr...

Qualcuno mi indirizza sulla via giusta?
Grazie.

Gabriele.


Maggiori informazioni sulla lista Python