2011-08-18 3 views
8

방금 ​​파이썬을 배우기 시작했고 연습/재미를위한 자체 탭 완성 함수를 작성했습니다 (아무도 우리에게 rlcompleter를 말하지 않습니다). 실제로 파이썬이 함수를 호출하도록하는 데 어려움을 겪고 있습니다. 내 코드 :파이썬 : 함수를 키에 바인딩

import readline 
def tab_completer(): 
    print readline.get_line_buffer() 

readline.parse_and_bind("tab: tab_completer") 
while True: 
    raw_input("Prompt") 

예상 출력은 내가 탭 키를 누르 때 내가 입력 한 지금까지 무엇을 인쇄하는 것입니다,이 실제로 어떤 조언을 무슨 일이 일어나고 있는지없는 방법 적?

+0

실제 일어나고있는 것이 무엇인지 자세히 설명해야합니다. –

+0

아무 일도 일어나지 않습니다. 뭔가 탭 단추에 바인딩되어 있지만 (더 이상 탭이 없기 때문에) 기능을 실행하지 않습니다. 일어나는 모든 일은 내가 무효 한 키를 누른 것처럼 소음이 들리는 것입니다. – Trcx

답변

2

이 시도 :

import readline 

def tab_completer(text, state): 
    print "\ntext:", text 

readline.parse_and_bind("tab: complete") 
readline.set_completer(tab_completer) 
raw_input('Prompt: ') 

문제는 Tab completion in Python's raw_input() (내 기준이었다)도 도움이 될 수 있습니다.

+0

잠깐 후에 해보겠습니다. – Trcx

+0

완벽하게 작동했습니다! 고맙습니다. 한 가지 질문 만한다면 왜 readline.set_completer (tab_completer) 행을 사용해야합니까? 나는 parse_and_bind 구문이 " : " – Trcx

+1

이라고 생각했다. 나는 이 눌린 키의 이름이고 이 GNU readline 루틴이라고 생각한다. parse_and_bind() 줄은 TAB 키가 눌려지면 GNU readline이 "complete"루틴을 호출하도록 지시합니다. set_completer 행은 해당 루틴에 의해 호출되는 Python 루틴을 지정합니다. " : TAB :이 예제의 readline 초기화 파일 http://www.kr.nu.org/s/bash/manual/html_node/Sample-Init-File.html#Sample-Init-File"에서 TAB : 전체 줄을 확인하십시오. "구문은 GNU readline에만 적용됩니다. –

관련 문제