tiiziba 发表于 2021-3-25 23:34:29

如何让输入的时候,只看到 *****

【求助】有个疑问 在 input(‘请输入一个密码:’)运行的时候,让在屏幕上输入的密码显示为 ****

小伤口 发表于 2021-3-25 23:38:31

个人认为这个就得要gui了吧{:10_254:}

jackz007 发表于 2021-3-25 23:56:29

本帖最后由 jackz007 于 2021-3-26 01:18 编辑

#coding:gbk

import msvcrt
import sys

def pas(prompt):
    if prompt :
      sys . stdout . write(prompt)
      sys . stdout . flush()
            
    pwd , c = '' , 0
    while True:
      b = msvcrt . getch()
      x = b . decode('gbk')
      if ord(x) == 13:
            break
      elif ord(x) == 8:
            if c:
                sys . stdout . write('\b \b')
                sys . stdout . flush()
                pwd = pwd[:-1]
                c -= 1
      else:
            pwd = pwd + x
            sys . stdout . write('*')
            sys . stdout . flush()
            c += 1
    sys . stdout . write('\n')
    sys . stdout . flush()   
    return pwd

usr = input('输入用户名 : ') . strip()
pwd = pas('输入密码 : ')
print('用户 :' , usr)
print('密码 :' , pwd)

Daniel_Zhang 发表于 2021-3-26 02:09:04

如果你不需要密码回显的话,也就是输入的时候什么都不显示,就像 terminal 那种的,可以尝试一下这个:

import getpass

while True:
    pswd = getpass.getpass('Password:')
    print(pswd)

2567696873 发表于 2021-3-26 06:39:23

{:10_249:}

python初学者021 发表于 2021-3-26 09:50:15

我用tkinter实现的

#!/usr/bin/python3

from tkinter import *

root = Tk()

Label(root, text = "User Name ").grid(row = 0, column = 0)
Label(root, text = "Pass word ").grid(row = 1, column = 0)

e1 = Entry(root)
e2 = Entry(root, show = "*")

e1.grid(row = 0, column = 1, padx = 10, pady = 10)
e2.grid(row = 1, column = 1, padx = 10, pady = 10)

mainloop()

主要是这行代码:
e2 = Entry(root, show = "*")

591821661 发表于 2021-3-27 12:24:20

这个我的主题里面有……
页: [1]
查看完整版本: 如何让输入的时候,只看到 *****