【发布时间】:2021-06-20 05:15:10
【问题描述】:
我希望 getstr 在按下某个键时显示 *(星号),基本上它就像一个密码登录表单。 关于如何做到这一点的任何线索? (类似于 getpass)
所以如果我输入 abcd 它将返回 **** (abcd)
我不知道这个问题是否已经回答了。
【问题讨论】:
标签: python curses python-curses
我希望 getstr 在按下某个键时显示 *(星号),基本上它就像一个密码登录表单。 关于如何做到这一点的任何线索? (类似于 getpass)
所以如果我输入 abcd 它将返回 **** (abcd)
我不知道这个问题是否已经回答了。
【问题讨论】:
标签: python curses python-curses
您可以通过 getch() 将用户输入作为一系列字符
然后在每次输入后打印 *
[编辑]:
忘记处理退格键:-
请参考以下更健壮的代码:
import sys
import msvcrt
def encriptAndsavePassword():
password = ''
while True:
x = ord(msvcrt.getch())
if x == 13:
# When system receives a carriage return character
sys.stdout.write('\n')
return password
elif x == 8:
if len(password) > 0:
# Deletes previous character.
sys.stdout.write('\b' + ' ' + '\b')
sys.stdout.flush()
password = password[:-1]
else:
sys.stdout.write('*')
password +=x
您可以从here 阅读有关getch() 的信息
【讨论】:
TypeError: can only concatenate str (not "bytes") to str 我认为这行不通,因为我使用的是诅咒而不是控制台
Which operating system are you using?Windows