簡體   English   中英

Python curses - 隱藏用戶輸入

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM