如何在 python shell 中创建密码条目?

How do you create a passcode entry in the python shell?

如何创建修改后的 input() 函数,以便当您输入任何内容时,与您输入的内容不同的内容会出现在 shell 中?

示例输出:

>>> input('in>')
in> ***********
hello world

请参阅 effbot http://effbot.org/tkinterbook/entry.htm

上的 show= 示例和说明

您可能想为此使用 Tk,但要取消 root。绑定 root 以检测任何按键,当检测到时,记录按键但打印出 '*'

对于基本的一次性密码,这是代码:

from tkinter import *
import sys

cp = ''
root = Tk()

def process(event):
    global cp
    key = event.keysym
    if key == 'Return':
        sys.stdout.write('\n')
        print(cp)
        sys.exit()
    else:
        if len(key) == 1:
            cp += key
            sys.stdout.write('*')


root.bind('<Key>', process)

root.withdraw()
root.mainloop()

如果您将从另一个程序调用它或多次使用它, 使用共享文件和使用子进程可能会有所帮助。