[英]Using backspace with getch() in python curses
我希望用戶能夠使用getch()的工作方式輸入每個字符。 我還啟用了echo(),因為我想打印出用戶鍵入的每個字符。 但是,我還希望用戶能夠敲擊退格鍵,並擁有擊打退格鍵之前按下的鍵以將其從屏幕上刪除,就像退格鍵在文本編輯器中的工作方式一樣。 我怎樣才能做到這一點? 我正在使用帶有curses lib的python 3.6(很明顯)。 如果您想到目前為止看到我的代碼,這里是:
import curses
# ----- INIT -----
stdscr = curses.initscr()
curses.cbreak()
stdscr.keypad(1)
# ----- PRINT -----
text = "Hello world"
stdscr.addstr(1, 0, text + "\n")
stdscr.refresh()
# ----- MAIN LOOP ------
while 1:
c = stdscr.getch()
if c == ord('q'):
break
# ----- RESET TERMINAL -----
curses.echo()
curses.nocbreak()
stdscr.keypad(1)
curses.endwin()
您可以執行以下操作:禁用回顯,使用顯式庫調用來回顯除“ backspace”的通常選擇以外的字符:
import curses # ----- INIT ----- stdscr = curses.initscr() curses.cbreak() curses.noecho() stdscr.keypad(1) # ----- PRINT ----- text = "Hello world" stdscr.addstr(1, 0, text + "\n") stdscr.refresh() # ----- MAIN LOOP ------ while 1: c = stdscr.getch() if c == ord('q'): break if c == 8 or c == 127 or c == curses.KEY_BACKSPACE: stdscr.addstr("\b \b") else: stdscr.addch(c) # ----- RESET TERMINAL ----- curses.echo() curses.nocbreak() stdscr.keypad(1) curses.endwin()
Python curses參考沒有對addch
詳細addch
,但是由於它是curses的包裝,因此您可以閱讀其手冊頁,了解如何解釋文字退格\\b
使光標向后移動。 然后,該示例寫入一個空格(擦除其中的任何內容),然后將光標移回空白空間。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.