[Python] Non Blocking input crossPlatform: aiuto per codice.

Pietro Brunetti gunzapper a gmail.com
Mer 27 Feb 2019 13:21:48 CET


Non so perché ma il tuo problemami mi ha ricordato questo

https://youtu.be/hJhZhLg3obk

l'autore parla di come ha costruito pgcli, una cli per fare query su
postgres



Il giorno mer 27 feb 2019 alle ore 13:13 Manlio Perillo <
manlio.perillo a gmail.com> ha scritto:

> On Wed, Feb 27, 2019 at 11:08 AM Gabriele Battaglia <iz4apu a libero.it>
> wrote:
> >
> > Gente, so che sono uno stress infinito con sta storia, me ne rendo conto
> > e mi scuso.
> > Le mie enormi lacune in programmazione unitamente alle mie esigenze
> > particolari di utente disabile, mi rendono un po una spina nel fianco di
> > questo gruppo: grazie per la vostra pazienza e per tutto il vostro aiuto
> > e supporto. Per fortuna che il traffico qui non è tanto elevato.
> >
> > Ribadisco, ed è importante, che chiunque si deve sentire libero di
> > rispondere solo quando e se ha tempo e voglia, non ho fretta alcuna.
> >
>
> Io trovo le tue domande interessanti, proprio perchè sei novizio e
> disabile.
>
> > Riepilogando.
> > Io scrivo piccoli programmini privi di GUI, utili principalmente a me
> > che usano testo in out e tastiera in input. Ho bisogno di un modulo che
> > possa importare in tutti i miei scripts che agevoli l'input da tastiera
> > facendo sostanzialmente 2 cose:
> > 1. che non blocchi tutto mentre l'utente scrive e, 2. che non debba
> > attendere la pressione di invio.
> > Tutto deve funzionare sotto Windows e sotto Unix BSD e tutto deve andare
> > in modalità terminale, quindi niente grafica, niente pygame o altre
> > librerie che cambiano la modalità di visualizzazione della console.
> >
> > La miglior approssimazione di ciò che mi serve è questa:
> >
> > https://www.dropbox.com/s/rzd3wwrsmyx587p/key14.py?dl=0
> >
>
> Non hai problemi con il software di assistenza quando imposti la
> modalità non canonica su Unix?
> Inoltre un consiglio: per entrare ed uscire dalla modalità non
> canonica, usa un context:
>
> https://docs.python.org/3/reference/datamodel.html#with-statement-context-managers
>
> Ti basta definire il metodo __enter__ che semplicemente restituisce
> self, ed il metodo exit che resetta il terminale.
> In questo modo puoi fare:
>
> with KBHit() as kb:
>     ...
>
> > Funziona bene sotto Unix, perciò guardate solo la parte che riguarda
> > Windows che ha dei problemi:
>
> Ironicamente, su Windows è molto più facile fare quello che vuoi,
> perchè non ha i problemi che ci sono su Unix.
> I terminali su Unix sono un incubo, per non parlare dei problemi sei
> vuoi impostare la modalità non bloccante su un file:
> https://cr.yp.to/unix/nonblock.html.
>
> Per impostare la modalità non canonica:
> https://docs.microsoft.com/en-us/windows/console/setconsolemode
>
> Per vedere se c'è input disponibile (ma non credo ti serva):
> https://docs.microsoft.com/en-us/windows/console/peekconsoleinput
>
> Per leggere in Unicode:
> https://docs.microsoft.com/en-us/windows/console/readconsole
>
> Per attendere la pressione di un tasto, con timeout (simile a select):
>
> https://docs.microsoft.com/en-us/windows/desktop/api/synchapi/nf-synchapi-waitforsingleobject
>
> > innanzitutto va a capo ogni volta che
> > stampa un carattere, se imposto end="" in print(), non stampa più nulla
> > finchè non premo invio e da ultimo crasha quando premo un carattere non
> > alfanumerico, magari questo si sistema facilmente, non ho approfondito.
> >
>
> Non sono sicuro di capire il primo problema.  Perchè devi premere
> [INVIO] per forzare print a scrivere sul terminale?
> Riguardo il crash (tecnicamente non è un trash, ma una eccezione non
> gestita), dovresti allegare il traceback completo.
>
> > [...]
>
> Ciao
> Manlio Perillo
> _______________________________________________
> Python mailing list
> Python a lists.python.it
> https://lists.python.it/mailman/listinfo/python
>


-- 
There is a crack, a crack in everything. That’s how the light gets in
L. Cohen
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20190227/d294c101/attachment.html>


Maggiori informazioni sulla lista Python