2013-08-19 4 views
4

나는 백 스페이스 키를 다르게 매핑하는 방법을 찾고 있지만 그게 내가하는 것이 아니다.백 스페이스 키 입력을 유발하는 Python 코드?

나는 파이썬 코드를 작성하는 프로그램에있어, 기본적으로 내가

(백 스페이스 키가 뭔가를 삭제로) 사람이 바로 GUI에서 백 스페이스 키를 누르 생각하는 프로그램을 일으키는 코드의 라인을 작성하려면

백 스페이스 키 스트로크에서 어떻게 코드합니까?

+0

어떤 상황에서 키 입력이 발생합니까? Tkinter 텍스트 위젯? 다른 GUI 프레임 워크? – Brionius

+0

아마도 두 개 이상을 지정해야합니다. 실제로 여기서 문자를 삭제하지 않는 임은 \ b를 사용합니다. 기본적으로이 프로그램에서는 이미지 추적이라고 생각하고 이미지의 고 대비 지점에 표시를합니다. 오류 임계 값을 조정하면 높은 오류로 포인트가 올라갑니다. GUI 뷰어에서 백 스페이스 키를 누르면 선택된 점이 삭제됩니다. 그게 내가 원하는 걸. – aescript

+0

자, 이벤트 리스너가 필요합니다. 예를 들어, Tkinter에서는 함수를 ['이벤트] (http://effbot.org/tkinterbook/tkinter-events-and-bindings.htm)에 바인드합니다. GUI를 작성한 프레임 워크를 알려주지 않으면 더 이상 당신을 도울 수 없습니다. – Brionius

답변

3

백 스페이스의 문자 '\b'하지만 당신이 GUI에 영향을하려는 것 같은데.

프로그램이 GUI를 변경하면 활성 입력 필드에서 마지막 문자를 삭제하면됩니다.

+0

어쩌면 내가 더 이상을 지정해야합니다. 실제로 여기서 문자를 삭제하지 않는 임은 \ b를 사용합니다. 기본적으로이 프로그램에서는 이미지 추적이라고 생각하고 이미지의 고 대비 지점에 표시를합니다. 오류 임계 값을 조정하면 높은 오류로 포인트가 올라갑니다. GUI 뷰어에서 백 스페이스 키를 누르면 선택된 점이 삭제됩니다. 그게 내가 원하는 걸. – aescript

+2

'if key == '\ b': delete_points()' –

+0

delete_points()는 무엇입니까? Theres는 나가 부를 수있는 점을 삭제하기를위한 실제적인 원본 명령 없다. 나는 자동화 된 키 스트로크가 필요하다. 내가 backspace에 조치를 취하게하고 싶지 않다는 뜻. 스크립트를 통해주기를 분석하고, 점을 삭제하고, 다음 프레임으로 이동하고, 분석하고, 삭제하는 등의 작업을하고 싶습니다.하지만 다시 한번 delete_points() 액션을 발생시킬 수있는 스크립트는 없습니다. . 내가 같은 것 원한다.() pythonCommandToCauseKeysroke [ '\의 B'] 뇌졸중() etccc – aescript

4
foo = "abc" 
foo = foo + "\b" + "xyz" 
print foo 
>> abxyz 
print len(foo) 
>> 7 

if key == '\b': delete_selected_points() 
+0

아마도 두 개 이상을 지정해야합니다. 실제로 여기서 문자를 삭제하지 않는 임은 \ b를 사용합니다. 기본적으로이 프로그램에서는 이미지 추적이라고 생각하고 이미지의 고 대비 지점에 표시를합니다. 오류 임계 값을 조정하면 높은 오류로 포인트가 올라갑니다. GUI 뷰어에서 백 스페이스 키를 누르면 선택된 점이 삭제됩니다. 그게 내가 원하는 걸. – aescript

+0

브렌트가 말한대로, 내가 뭔가를 놓치지 않는 한. – Jiminion

4

나는 그것을 얻었다!

print('\b ', end="", flush=True) 
sys.stdout.write('\010') 

백 스페이스!

2

다른 답변은 '\ b'를 사용하여 백 스페이스를 사용합니다. 귀하의 경우에 트릭은 줄 바꿈을 추가하지 않으려면 print 대신 sys.stdout.write를 사용하는 것입니다. 그런 다음 적당한 수의 백 스페이스 문자를 기다리면서 인쇄하십시오.

import time 
import sys 

print("Good morning!") 
while True: 
    time_fmt = "It's %I:%M:%S %p on %A, %b %d, %Y" 
    time_str = time.strftime(time_fmt) 
    sys.stdout.write(time_str) 
    sys.stdout.flush() 
    time.sleep(1) 
    sys.stdout.write("\b"*len(time_str))