可以让 Getch(或类似的东西)接受退格键吗?
Can Getch (or something similar) be made to accept backspaces?
我正在使用以下函数 getPass() 进行安全密码输入:
def getPass():
password = ''
while True:
x = getch.getch()
# x = msvcrt.getch().decode("utf-8")
if x == '\r' or x == '\n':
break
print('*', end='', flush=True)
password += x
return password
但是,一个问题是退格键不被接受,除非作为新字符:
现实生活中的退格键是这样的:(“|”符号仅供参考)
之前:
••••|
之后:
••• |
但是当我执行 getpass()
时,它在控制台中显示为:
之前:
****|
然后你按退格键,应该变成什么
*** |
实际上变成了
****|*
(注意额外的星号)。
也许我应该将解决方案保留为 print('Type your password:\n(Backspace not accepted: Press Enter to redo))
让用户陷入循环,但这对 21 世纪的用户来说非常烦人。
我可以使用标准的 getpass() 模块。
from getpass import getpass
def getPass():
password = getpass.getpass('Enter Your Password\n>>>')
return password
password = getpass()
我正在使用以下函数 getPass() 进行安全密码输入:
def getPass():
password = ''
while True:
x = getch.getch()
# x = msvcrt.getch().decode("utf-8")
if x == '\r' or x == '\n':
break
print('*', end='', flush=True)
password += x
return password
但是,一个问题是退格键不被接受,除非作为新字符:
现实生活中的退格键是这样的:(“|”符号仅供参考)
之前:
••••|
之后:
••• |
但是当我执行 getpass()
时,它在控制台中显示为:
之前:
****|
然后你按退格键,应该变成什么
*** |
实际上变成了
****|*
(注意额外的星号)。
也许我应该将解决方案保留为 print('Type your password:\n(Backspace not accepted: Press Enter to redo))
让用户陷入循环,但这对 21 世纪的用户来说非常烦人。
我可以使用标准的 getpass() 模块。
from getpass import getpass
def getPass():
password = getpass.getpass('Enter Your Password\n>>>')
return password
password = getpass()