Ana soru, python programımın yapılış biçimi için, bir tuşa basıldığında GUI gibi yenilenen programım için bir daktilo oluşturmaya çalışıyorum. Ancak, ASCII özellikle Backspace ile garip bir problemle karşılaşıyorum. mini daktilo şey yazdığınızPython 3.4: getch() - Bir Daktilo - 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
, o zaman ancak hiçbir şey yaptığım gibi kaç bağlı o kömürü üzerine wil tuşuna tekrar garip bastığınızda görünmesi, bir hata yaparsanız ve Backspace tuşlarına basın geri döndüğünüz zamanlar, ve hatta daha sonra geri yazdıysanız bile, aslında konsol çıkışlarının üzerine yazacaksınız. Eminim ki bu benim bloğumdaki bir hata değil, ASCII'nin nasıl işlediği.
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?! |
Neden? ve Bu hatayı nasıl düzeltebilirim? Yaptığım şeyi yapmanın daha temiz bir yolu var mı? Ama yaptığım GUI tarzında yapılmalı. (Eğer bu mantıklıysa)
Ayrıca, bu getch() 'in yazdığım herşeyi yakalamasının gerektiğini biliyorum, ancak sadece uygun karakterleri yakalamanın bir yolu var mı (Temel olarak benim tip yazmamın girdi() gibi olmasını istiyorum) Her yasadışı char şartına sahip olmadan?
Teşekkür ederiz.
, o zaman belki can tüm yasal karakterlerin durumu varsa? Eğer legal_chars içinde inp varsa: bir şeyler yap? – Bahrom