2015-02-06 116 views
3

我目前正在從我的筆記本電腦ssh到一個覆盆子pi項目來控制一些電機。我已經在Python中編寫了一些代碼,允許您輸入一個字母,並根據字母向前或向後移動。但是,您必須在代碼執行後的每個字母后按Enter鍵。 有沒有一種方式,界面檢測字母,而不需要按下輸入。 我知道你可以在tkinter中綁定按鍵,但是我不能通過ssh來完成。 在此先感謝綁定鍵按

+1

可能重複http://stackoverflow.com/questions/510357/python-read-a-single-character-from用戶) – 2015-02-06 22:56:36

+0

@AnttiHaapala我找不到,因爲我不完全知道我在找什麼 – george 2015-02-06 22:59:03

+0

基本上,您可以將sys.stdin /終端放入「原始模式」並一次讀取1個字符,如那裏的一些答案。詛咒在這裏回答也是一個選項,但是隨後整個終端將被設置爲curses模式。 – 2015-02-06 23:27:43

回答

2

您可以使用curses庫。

您可以抓取使用screen.getch()函數按下的鍵。它將返回密鑰的十進制代碼(請參閱ASCII Table)。

一個例子:

import curses 


screen = curses.initscr() 
curses.cbreak() 
screen.keypad(1) 

key = '' 

while key != ord('q'): # press <Q> to exit the program 
    key = screen.getch() # get the key 
    screen.addch(0, 0, key) # display it on the screen 
    screen.refresh() 

    # the same, but for <Up> and <Down> keys: 
    if key == curses.KEY_UP: 
     screen.addstr(0, 0, "Up") 
    elif key == curses.KEY_DOWN: 
     screen.addstr(0, 0, "Down") 

curses.endwin() 
的[讀的Python來自用戶的單個字符(
+0

好的,這是我需要的有點東西,謝謝。如果我想打印輸入的內容,您只需打印(鍵)。我不確定實際輸入是什麼 – george 2015-02-06 22:45:53

+0

@JoranBeasley雖然我從一個覆盆子pi運行它,我不使用Linux編碼。我只是運行一些Python腳本。 – george 2015-02-06 22:47:16

+0

這是蟒蛇...但該代碼只適用於Linux(即raspberrry pi) – 2015-02-06 22:48:21