Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 26/04/2023, à 00:02

nulenubuntu

détecter la touche esc dans in input() sous ubuntu

Bonjour
j'aimerai que quand on a^puie sur la touche echap, je sors de la boule while:
un truc du genre

while True:
    item=input("indiquer une chose")
    if item = "la touche echap"
        break
    else:
        print(item)

comme tj je peux faire sous ubuntu?
sous windows , j'ai la solution avec msvcrt mais je peux pas l'installer sous ubuntu....

Hors ligne

#2 Le 26/04/2023, à 08:59

lann

Re : détecter la touche esc dans in input() sous ubuntu

Il faudrait connaître le type de langage de programmation que tu comptes utiliser

En ligne

#3 Le 26/04/2023, à 09:45

nulenubuntu

Re : détecter la touche esc dans in input() sous ubuntu

en python désolé..

Hors ligne

#4 Le 26/04/2023, à 10:16

mandeb

Re : détecter la touche esc dans in input() sous ubuntu

bonjour,
on peut déjà essayer avec ça :

if ord(c)==27:

à peaufiner bien sûr.

Hors ligne

#5 Le 26/04/2023, à 10:48

Compte supprimé

Re : détecter la touche esc dans in input() sous ubuntu

Bonjour,
input() attend une chaine de caractère. Cette commande ne te permettra pas de savoir si la touche 'Échap' a été pressée. Pour faire cela, il te faut gérer les évènements claviers avec une interface graphique (ou un gestionnaire  d'événement).
Exemple en utilisant tkinter:

import tkinter as tk

def PressAnyKey(label):
    value = label.char
    if ord(value)== 27:
        print("Evenement: La touche 'Èchap' à été pressée")
    else:
        print(f"Evenement: La touche '{value}' à été pressée")

fen = tk.Tk()
fen.title('Evènements Tkinter')

fen.bind('<Key>', lambda i : PressAnyKey(i))
fen.mainloop()

#6 Le 26/04/2023, à 13:13

nulenubuntu

Re : détecter la touche esc dans in input() sous ubuntu

et sans interface graphique, c'est pas possible?
car quand je programme python avec windows, j'ai accès au module msvcrt et je peux detecter la touche echap..

ca cam amrche avec iwndowsn mais pas sous linux...
une alternaitve sans interface graphique?

import sys
import msvcrt
def func():
    print ('Enter user input:')
    while True:
        if msvcrt.kbhit():
            key_stroke = msvcrt.getche()
            if key_stroke==chr(27).encode():
                print ("Esc key pressed")
                sys.exit()
            else:
                #print (str(key_stroke).split("'")[1],"key pressed")
                i=str(key_stroke).split("'")[1]+input()
                print ("User input:",i)
                            
func()

Hors ligne

#7 Le 26/04/2023, à 15:09

mandeb

Re : détecter la touche esc dans in input() sous ubuntu

Hors ligne

#8 Le 26/04/2023, à 19:02

Amiralgaby

Re : détecter la touche esc dans in input() sous ubuntu

En soi,

Il suffit de lire l'entrée en non bloquant

Non-blocking console input?

Je suis passé par ce lien avant, c'est le même ordre d'idée

Taking input from sys.stdin, non-blocking


Vive la communauté du Libre !!!

Hors ligne

#9 Le 27/04/2023, à 10:56

LeoMajor

Re : détecter la touche esc dans in input() sous ubuntu

salut,
1/

ask=""; while true; do read  -s -n1; printf -v code %d "'$REPLY"; if [ "$code" -eq 27 ]; then break; else ask="$ask$REPLY"; fi; done; echo "$ask"

touche "esc" pour sortir, sinon la routine concane chaque appel du clavier.

2/

gbs3 -e 'print "saisie?": dim ask,t as string: while 1: input t: if string.code(t)=0 then break else ask&=t: wend: print ask' 

saisie apparente, touche "esc/enter/return" pour sortir, sinon la routine concane chaque appel du clavier.

3/Tous les contrôles graphiques qu'on trouve habituellement dans les frameworks de développement, ont des évènements à la souris, et au clavier; un lointain héritage de com/ole/activex/../widget
archétype foo.keypress(),   foo.keyrelease();  appuyer, relâcher une touche
4...

Hors ligne

#10 Le 27/04/2023, à 15:23

Compte supprimé

Re : détecter la touche esc dans in input() sous ubuntu

nulenubuntu a écrit :

et sans interface graphique, c'est pas possible?

Oui notamment avec  https://pypi.org/project/keyboard/

Sinon si au lieu de détecter l'appui d'une touche, tu peux facilement mettre une lettre(ou un mot) comme sentinelle.
Exemple en utilisant iter():

for nom in iter(lambda:input('Enter user input:'), 'q'):
	print('User input:', nom)

print('"q", je quitte!')