Die input () -Funktion wird nur gelesen, wenn Sie die Eingabetaste drücken. Ich möchte das Drücken der Eingabetaste weglassen. Also suchte ich nach einer Möglichkeit, die Eingabetaste nicht zu drücken.
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)
Es scheint, dass dies für Mac gemacht werden kann Referenzquelle: https://torina.top/detail/428/
while True:
print('Eingang:',end='')
key = getch()
print(key)
#Endet mit esc
if key == chr(27):
break
Eingabe: a
Eingabe: f
[Maus hier]
Ich war in der Lage ...
** Input:
ist verschwunden! !! ** ** **
(Wenn ich ein Zeichen eingebe, erscheint es plötzlich und es fühlt sich an, als wäre es von Anfang an da)
Eingang:[Maus hier]
Ich möchte, dass Du
while True:
print('\r Eingabe:',end='')
key = getch()
print(key)
if key == chr(27):
break
Wenn Sie das \ r
an der Stelle platzieren, an der Sie es nicht löschen möchten, ist die Eingabe:
nicht verschwunden! !!
Ich bin mir nicht sicher warum, aber es ist das Ergebnis von Versuch und Irrtum.
Anscheinend sollten Sie Zeichen wie "\ r" und "\ n" vor "getch ()" in die Zeichenfolge einfügen.
print('key :', end='', flush=True)
Ich konnte es anzeigen. Alles wird nicht auf dem Bildschirm angezeigt, bis der Zeilenumbruch ausgegeben wird. Wenn Sie "print (" key: ", end =") an einer anderen Stelle ausführen, wird es ohne Zeilenumbrüche ausgegeben, sodass es sich in einem unordentlichen Zustand befindet. ..
s = []
while 1:
print('\r'+''.join(s), end='')
char = getch()
#Endet mit esc
if char == chr(27):
break
#Wenn Sie die Eingabetaste drücken\Ist r eingegeben? Ignorieren, da sich der Cursor am linken Ende befindet
elif char == chr(13):
continue
#Löschen Sie ein Zeichen mit Rücktaste
elif char == chr(127):
if len(s) != 0:
s.pop()
print('\b ',end='')
continue
s.append(char)
print('')
Jetzt tippe ich jeweils ein Zeichen, konnte es aber jedes Mal anzeigen! Wenn Sie etwas mehr Verarbeitung hinzufügen, können Sie gleichzeitig mit der Eingabe von Klein- in Großbuchstaben konvertieren! Beeindruckend!