2016-10-19 7 views
1

중단 될 때까지 계속 마우스 위치를 계속 인쇄하는 기능을 만들고 있습니다. 수입 pyautogui마우스 위치를 인쇄하려고 할 때 잘못된 출력이 발생했습니다.

import pyautogui 

print('Press CTRL + "c" to stop') 

while True: 
    try: 
     x, y = pyautogui.position() 
     positionStr = 'X: ' + str(x).rjust(4) + ' Y: ' + str(y).rjust(4) 
     print(positionStr, end = ' ') 
     print('\b' * len(positionStr), end = '', flush = True) 
    except KeyboardInterrupt: 
     print('\nDone') 
     break 

예상 출력은 다음과 같이 보일 것입니다 :

X : 265 Y : 지속적으로

갱신 (634) 하나 개의 라인을하지만이 난 것입니다 점점 :

XXXXXXXXXXXXXXXXXXX : 665 Y : 587

XXXXXXXXXXXXXXXXX : 665 Y : 587

XXXXXXXXXXXXXXXXXXXX : 665 Y : 587

XXXXXXXXXX : 718 Y : 598

XXXXXXXXXXXX : 1268 Y : 766

의 \ B의 문자를 제거 가져 오기 pyautogui

print('Press CTRL + "c" to stop') 

while True: 
try: 
    x, y = pyautogui.position() 
    positionStr = 'X: ' + str(x).rjust(4) + ' Y: ' + str(y).rjust(4) 
    print(positionStr) 
    print('\b' * len(positionStr), end = '', flush = True) 
except KeyboardInterrupt: 
    print('\nDone') 
    break 

X : 830 Y : 543

X : 830 Y : 543

X : 830 Y : 543

X : 830 Y : 543

완료에게

+0

출력 무엇입니까 '\ b'문자를 인쇄하지 않습니까? –

+0

검색 결과를 일치하도록 업데이트했습니다. 그것은 반복되는 'x'를 없애 버렸지 만 여전히 플러싱하지 않습니다. – MoRe

+0

플러시되지 않는다는 것은 무엇을 의미합니까? –

답변

1

충분한 문자를 백 스페이스하지 않습니다. 여분의 "끝"문자가 있는지 잊어 버렸습니다. 물론 end 매개 변수를 완전히 생략 할 수 있어야합니다.

+0

그래서 내가 만든 백 스페이스의 수를 어떻게 늘릴 것인가? len (positionString) + 1 또는 그와 비슷한 것을 만들어야합니까? – MoRe

+0

@ user7032374 그 트릭을해야합니다. 또는 앞에서 말한 'end' 매개 변수를 제거하십시오. –

+0

그래서 양쪽 끝을 없애 버렸지 만 여전히 줄을 지우지는 않습니다. 예를 들어 – MoRe

3

당신은 캐리지 리턴과 라인을 인쇄 할 수 있습니다 :

즉 :

과 같이
print(positionStr + '\r'), 

, 다음 라인은 기존의 것을 대체합니다. 그리고 새로운 마우스 위치로 업데이트 된 행이 항상 표시됩니다.

전체 스크립트를

#!/usr/bin/env python 

import pyautogui 

print('Press CTRL + "c" to stop') 

while True: 
    try: 
     x, y = pyautogui.position() 
     positionStr = 'X: ' + str(x).rjust(4) + ' Y: ' + str(y).rjust(4) 
     print(positionStr + '\r'), 
    except KeyboardInterrupt: 
     print('\nDone') 
     break 

그것이 도움이되기를 바랍니다.

편집

같이,이 솔루션은 유닉스 플랫폼에서 작동하지만 다른 사람에 테스트되지 않았습니다 아래 설명했다. 다른 줄 끝 규칙 이후로 끊어 야합니다. 그것을 지적한 @ Code-Apprentice 덕분입니다.영업 이익과 코드 - 견습생의 코멘트 이후

RE-EDIT

, 나는 다음과 같은 스크립트를 해결하기 위해 시도하고 같은 작품 기대 : 당신이 경우에

import pyautogui 

print('Press CTRL + "c" to stop') 

while True: 
    try: 
     x, y = pyautogui.position() 
     positionStr = 'X: ' + str(x).rjust(4) + ' Y: ' + str(y).rjust(4) 
     print(positionStr, end=' ') 
     print('\b' * (len(positionStr) + 1), end='') 
    except KeyboardInterrupt: 
     print('\nDone') 
     break 
+0

를 표시하도록 질문을 수정하지만 혼수 상태는 다음에 오는하시기 바랍니다 닫는 괄호 – JazZ

+0

죄송합니다. 더 수면이 필요합니다 :-) – volcano

+0

어쨌든 고마워요. 이런 식으로 더 읽기 쉽습니다. =) – JazZ

관련 문제