2015-02-06 5 views
3

저는 현재 일부 노트북을 제어하기 위해 노트북에서 나무 딸기 파이로가는 프로젝트에 참여하고 있습니다. 필자는 Python으로 문자를 입력 할 수있는 코드를 작성했으며 문자에 따라 앞뒤로 이동합니다. 그러나 코드를 실행하려면 모든 문자 뒤에 Enter 키를 눌러야합니다. Enter 키를 누를 필요없이 인터페이스에서 문자를 감지하는 방법이 있습니까? tkinter에서 키 누르기를 바인드 할 수 있지만 ssh를 통해 키 입력을 할 수 없다는 것을 알고 있습니다. 미리 감사드립니다.바인딩 키 프레스

+1

중복 가능성 http://stackoverflow.com/questions/510357/python-read-a-single-character-from -the-user) –

+0

@AnttiHaapala 내가 찾던 것을 완전히 알지 못해서 찾지 못했습니다. – george

+0

기본적으로 sys.stdin/터미널을 "원시 모드"에 넣고 그림과 같이 한 번에 한 문자 씩 읽을 수 있습니다 거기에 대한 몇 가지 대답. 여기에 응답 한 curses도 옵션이지만, 전체 터미널은 curses 모드로 설정됩니다. –

답변

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() 
([파이썬 사용자로부터 하나의 문자를 읽을]의
+0

그게 내가 필요한 것 같아. 고마워. 입력 한 내용을 인쇄하려면 인쇄 (키)를 수행하십시오. 나는 실제 입력이 – george

+0

@ JoranBeasley 인 지 잘 모르겠다. 리눅스 코딩을 사용하지 않는 라즈베리 파이에서 실행하고 있지만. 방금 파이썬 스크립트를 실행했습니다. – george

+0

파이썬입니다 ...하지만 그 코드는 리눅스에서만 작동합니다 (예 : raspberrry pi) –