Можно ли при наборе текста изменить то, как отображается текст?

Итак, я делаю программу для проверки пароля, и мне было интересно: когда пользователь вводит свой пароль, можете ли вы запретить отображать его пароль, когда они вводят его в консоль / графический интерфейс?


person 0llie_C    schedule 11.03.2014    source источник
comment
Для консольного приложения лучше всего использовать модуль getpass, даже если он не меняет набранные символы на звездочки.   -  person Jayanth Koushik    schedule 11.03.2014
comment
Вы уверены, что хотите, чтобы * отображался эхом? Достаточно ли подавления нажатия клавиш?   -  person MattH    schedule 11.03.2014
comment
Да, подавление нажатия клавиш сработает, но как?   -  person 0llie_C    schedule 11.03.2014
comment
Спасибо :) Попробую   -  person 0llie_C    schedule 11.03.2014


Ответы (2)


Python предлагает вам встроенную библиотеку:

>>> import getpass
>>> pw = getpass.getpass()

Изменить: как упоминалось @MattH, это не будет отображать звездочки (*), пока пользователь вводит пароль.

person santosh-patil    schedule 11.03.2014
comment
Не предоставляет * для нажатия клавиш - person MattH; 11.03.2014

import tkinter as tk 

root = tk.Tk()

def store():
    pw = my_box.get()

my_box = tk.Entry(root, show='*')
my_box.pack()
Button(text='Submit', command=store).pack()

root.mainloop()

Это будет работать в графическом интерфейсе. Затем при необходимости вы можете позвонить pw = my_box.get().


Вы можете скрыть пользователя input в консоли с помощью _4 _ module- но это только скрывает и не отображает звездочки.

>>> import getpass
>>> pw = getpass.getpass()

Но отображение звездочек в консоли немного сложнее; вам нужно будет использовать sys и msvcrt - погуглить или задать отдельный вопрос, спрашивая, как использовать эти модули для этой цели; Я не знаю.

person anon582847382    schedule 11.03.2014