如何在输入密码时将其转换为asterisks?

2024-06-01 02:47:42 发布

您现在位置:Python中文网/ 问答频道 /正文

Python中有没有一种方法可以将用户输入的字符转换成星号,就像在许多网站上都可以看到的那样?

例如,如果一个电子邮件用户在输入密码时被要求登录到他们的帐户,那么它不会显示为字符,而是在每个笔划后显示为*,没有任何时间延迟。

如果实际密码是KermitTheFrog,则在键入时它将显示为*************


Tags: 方法用户密码键入网站电子邮件帐户星号
3条回答

如果您使用的是Tkinter:(这是Python2.x,但是,3.x会非常相似)

from Tkinter import Entry, Tk

master = Tk()

Password = Entry(master, bd=5, width=20, show="*")
Password.pack()

master.mainloop()

Password entry with tkinter

在外壳中,这是不可能的。但是,您可以编写一个函数来存储输入的文本,并在调用时只报告一个*字符串。 Kinda like this,我没有写。我只是用谷歌搜索了一下。

你可以这样做:

# if getch module is available, then we implement our own getpass() with asterisks,
# otherwise we just use the plain boring getpass.getpass()
try:
    import getch
    def getpass(prompt):
        """Replacement for getpass.getpass() which prints asterisks for each character typed"""
        print(prompt, end='', flush=True)
        buf = ''
        while True:
            ch = getch.getch()
            if ch == '\n':
                print('')
                break
            else:
                buf += ch
                print('*', end='', flush=True)
        return buf
except ImportError:
    from getpass import getpass

这里有^{},一个函数隐藏用户输入。

import getpass

password = getpass.getpass()
print(password)

相关问题 更多 >