Hauptfrage, für die Art, wie mein Python-Programm gebaut wird, versuche ich eine Schreibmaschine für mein Programm zu bauen, die beim Drücken einer Taste wie eine GUI aktualisiert. Ich stoße jedoch auf ein seltsames Problem mit ASCII, insbesondere Backspace.Python 3.4: getch() - Eine Schreibmaschine - Python
from msvcrt import getch
import os
#Test
# Always run in Python CMD
myinput = ""
Finished = False
while Finished != True:
os.system('cls')
print("Name: " + myinput)
while True:
key = ord(getch())
realkey = chr(key)
print(key)
if key != 0:
if key == 13: #Enter
Finished = True
break
else:
myinput = myinput + realkey
break
Wenn Sie etwas in der Mini-Schreibmaschine tippen, dann machen Sie einen Fehler und Sie drücken die Rücktaste, es so aussehen, wie es aber tat nichts, wenn Sie eine wieder seltsam Taste drücken wil sie die Zeichen überschrieben werden, je nachdem wie viele Mal, wenn Sie rückwärts gehen, und sogar Würgegriff, wenn Sie mehr als die eingegebene Rücktaste drücken, wird die Ausgabe der Konsole überschrieben. Ich weiß sicher, es ist kein Fehler in meinem Block, es ist nur, wie ASCII funktioniert.
P
>Name: P
y
>Name: Py
t
>Name: Pyt
h
>Name: Pyth
o
>Name: Pytho
n
>Name: Python
(Backspace)
>Name: Python
(Backspace)
>Name: Python
(Backspace)
>Name: Python
K
>Name: PytKon
#See?! |
Warum? und Wie kann ich diesen Fehler beheben? Gibt es eine sauberere Art zu tun, was ich mache? Aber es muss in dem GUI-Stil gemacht werden, den ich gemacht habe. (Wenn das Sinn macht)
Auch ich weiß, dass diese getch() soll alles erfassen, was ich tippe, aber gibt es eine Möglichkeit, nur richtige Zeichen zu erfassen (Grundsätzlich möchte ich meine typewrite wie input()) ohne jeden einzelnen illegalen Char zu konditionieren?
Vielen Dank.
dann vielleicht können Sie wenn Bedingung alle gesetzlichen Zeichen? 'if in legal_chars: tu Zeug? – Bahrom