[英]Python curses - hide user input
我正在用 python 詛咒開發一個應用程序。 我正在使用 getch() 方法來獲取按鍵。 但我可以在屏幕上看到按下的鍵。 我可以隨時移動光標,但在光標之后我可以看到用戶輸入的內容。
當然,我可以在每次按下按鍵后擦除和重繪整個屏幕,但它在閃爍——這很令人不安。
知道如何擺脫這些按鍵嗎? 謝謝
用下面的方法初始化curses類,就可以解決問題了。
class curses_screen:
def __enter__(self):
self.stdscr = curses.initscr()
curses.cbreak()
curses.noecho()
self.stdscr.keypad(1)
SCREEN_HEIGHT, SCREEN_WIDTH = self.stdscr.getmaxyx()
return self.stdscr
def __exit__(self,a,b,c):
curses.nocbreak()
self.stdscr.keypad(0)
curses.echo()
curses.endwin()
with curses_screen() as stdscr:
"""
Execution code plush getch code here
"""
Python標准庫中有一個模塊可以自動執行此操作,請嘗試:
def new(y):
import getpass
x = getpass.getpass(y)
return x
如果您不想使用getpass,我只是遇到了類似的問題。 您可以使用類似我最近完成的功能:
def passw(n, prompt = 'Password> '):
import msvcrt
import sys
write = sys.stdout.write
for x in prompt:
msvcrt.putch(x)
passw = ""
while 1:
x = msvcrt.getch()
if x == '\r' or x == '\n':
break
if x == '\b':
if passw == "":
pass
else:
write("\x08 \x08")
passw = passw[:-1]
else:
write(n)
passw = passw + x
return passw
msvcrt.putch('\r')
msvcrt.putch('\n')
您可以將任何單個字符或數字設置為n,這將在屏幕上返回,例如:星號為passw('*')或無回聲為passw(“”)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.