如何将密码显示为星号[重复]

2024-02-29

我正在尝试创建一个登录窗口,提示用户输入用户名和密码,尽管输入密码时我正在寻找要打印的星号,例如常见的密码输入(即 - Sekr3t 回显为:* * * * * *)。

这是我到目前为止的代码,我不明白为什么它不回显星号:

import msvcrt
import sys

def login(prompt = '> '):
   write = sys.stdout.write
   
   for x in prompt:
       msvcrt.putch(x)
   passw = ""
   
   while 1:
       x = msvcrt.getch()
       if x == '\r' or x == '\n':
           break
       if x == '\b':
           # position of my error
           passw = passw[:-1]
       else:
           write('*')
           passw = passw + x
   msvcrt.putch('\r')
   msvcrt.putch('\n')
   return passw

任何帮助,将不胜感激。


您应该能够通过写入字符来擦除星号\x08 \x08. The \x08将光标向后移动一个位置,空格将覆盖星号,然后是最后一个\x08将再次将光标移回,将其放在正确的位置以写入下一个*.

我不知道如何确定何时键入退格键,但您可以轻松做到这一点:只需添加类似的内容print repr(x)当你打电话之后x = msvcrt.getch(),然后启动程序并按退格键。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将密码显示为星号[重复] 的相关文章

随机推荐