La fonction input () ne lit pas sauf si vous appuyez sur la touche Entrée. Je veux omettre d'appuyer sur la touche Entrée. J'ai donc cherché un moyen d'éviter d'appuyer sur la touche Entrée.
import sys
import tty
import termios
def getch():
fd = sys.stdin.fileno()
old = termios.tcgetattr(fd)
try:
tty.setraw(fd)
return sys.stdin.read(1)
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old)
Il semble que cela puisse être fait pour mac Source de référence: https://torina.top/detail/428/
while True:
print('contribution:',end='')
key = getch()
print(key)
#Se termine par esc
if key == chr(27):
break
Entrée: a
Entrée: f
[Souris ici]
J'étais capable de ... ** ʻInput: `a disparu! !! ** **
(Quand j'entre un caractère, il apparaît soudainement et j'ai l'impression qu'il était là depuis le début)
contribution:[Souris ici]
je veux que tu sois
while True:
print('\entrée r:',end='')
key = getch()
print(key)
if key == chr(27):
break
Si vous mettez le \ r
à l'endroit où vous ne voulez pas l'effacer, l'entrée:
n'a pas disparu! !!
Je ne sais pas pourquoi, mais c'est le résultat d'essais et d'erreurs.
Apparemment, vous devriez mettre des caractères tels que \ r
et \ n
dans la chaîne de caractères avantgetch ()
.
print('key :', end='', flush=True)
J'ai pu l'afficher.
Tout n'est pas reflété sur l'écran tant que le saut de ligne n'est pas émis,
Si vous faites print ('key:', end = '')
ailleurs, il sera affiché sans saut de ligne, donc il est dans un état désordonné. ..
s = []
while 1:
print('\r'+''.join(s), end='')
char = getch()
#Se termine par esc
if char == chr(27):
break
#Lorsque vous appuyez sur Entrée\Est-ce que r est entré? Ignorer car le curseur est à l'extrémité gauche
elif char == chr(13):
continue
#Supprimer un caractère avec retour arrière
elif char == chr(127):
if len(s) != 0:
s.pop()
print('\b ',end='')
continue
s.append(char)
print('')
Maintenant, je tape un caractère à la fois, mais j'ai pu l'afficher à chaque fois! Si vous ajoutez un peu plus de traitement, vous pouvez convertir des minuscules en majuscules en même temps que vous le frappez! Hou la la!
Recommended Posts