Главный вопрос о том, как построена моя программа на Python, я пытаюсь создать пишущую машинку для своей программы, которая при нажатии клавиши обновляется как графический интерфейс. Однако я столкнулся со странной проблемой с ASCII, особенно с Backspace.
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
Когда вы печатаете что-то на мини-пишущей машинке, вы делаете ошибку и нажимаете Backspace, похоже, что ничего не происходит, однако, когда вы снова нажимаете клавишу, она странно перезаписывает символ в зависимости от того, сколько раз вы нажимали назад, и даже странно если вы нажмете на клавишу Backspace больше, чем вы набрали, это фактически перезапишет вывод консоли. Я точно знаю, что это не ошибка в моем блоке, просто так работает ASCII.
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?! |
Почему? и как я могу исправить эту ошибку? Есть ли более чистый способ делать то, что я делаю? Но это должно быть сделано в стиле графического интерфейса, который я сделал. (Если это имеет смысл)
Кроме того, я знаю, что этот getch() должен фиксировать все, что я печатаю, но есть ли способ фиксировать только правильные символы (в основном я хочу, чтобы моя пишущая машинка была похожа на input() ) без необходимости проверки каждого недопустимого символа?
Спасибо.
if inp in legal_chars: do stuff
? - person Bahrom   schedule 30.03.2016