#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
<Modéré>
Hors 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
des infos ici:
https://www.delftstack.com/fr/howto/pyt … -keypress/
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
Je suis passé par ce lien avant, c'est le même ordre d'idée
Vive la communauté du Libre !!!
En 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
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!')