Как скрыть ввод без getpass (он не работает)?

Я пытался сделать простую программу регистрации / входа и хотел скрыть пароль, поэтому я вышел в Интернет.

Я попробовал эту штуку под названием getpass, но она не сработала. Он только что сказал мне, что не может изменить эхо в оболочке IDLE (я использую IDLE Python 3.6 в Windows 10, кстати)

Поэтому мне было интересно, есть ли способ скрыть ввод без getpass или зашифровать его каким-либо другим способом?

Вот код:

class Account:
    def __init__(self, un, pw):
        self.un = un
        self.pw = pw

accounts = []

#account signing up

def signup():
    usernm = input("Make a username >>> ")
    passwd = input("Make a password >>> ")
    accounts.append(Account(usernm, passwd))

def signin():
    inun = input("Username? >>> ")
    inpw = input("Password >>> ")
    for account in accounts:
        if account.un == inun:
            if account.pw == inpw:
                print("Signed in!")



option = input("Sign [i]n or sign [u]p? >>> ").lower()
if option == "i":
    signin()
if option == "u":
    signup()

Спасибо:)

1 ответ

У меня это полностью работает, поэтому я предполагаю, что вы не использовали правильный синтаксис

      import getpass
 
p = getpass.getpass(prompt='Enter Your password: ')

Но если вы говорите, что это не сработало, потому что вы не видите никаких изменений в курсоре, то вы ошибаетесь. просто показывает неотображенный пароль (означает, что он не будет отправлять нажатия клавиш на терминал ).

IDLE или консоль Python, предназначенные для разработки предложений, а не для использования в программах, созданных для пользователей. Поэтому я бы порекомендовал вам использовать какой-то графический интерфейс, такой как Tkinter, чтобы выполнить ваше предложение.

Но если вы хотите, чтобы курсор двигался, ниже есть 2 решения:

  • Для Python IDLE используйте эту ссылку.
  • Для Tkinter вы можете использовать виджет, попробуй , это будет отображать "*" для каждого введенного вами ключа.
Другие вопросы по тегам