2017-10-04 11 views
0

이 코드는 마우스 포인터의 즉시 ​​X-Y 좌표, RGB 값 및 16 진수 값을 제공합니다. 좌표와 RGB 값은 정확하지만 때로는 16 진수 값이 잘못된 결과를 제공합니다.마우스 포인터의 파이썬 코드에서 16 진수 값을 반환하는 중 오류가 발생했습니다.

import pyautogui 
import time 

def print_no_newline(string): 
    import sys 
    sys.stdout.write("\r") 
    sys.stdout.write(string) 
    sys.stdout.flush() 
try: 
    while True: 
    x, y = pyautogui.position() 
    pixelColor = pyautogui.screenshot().getpixel((x, y)) 
    ss = 'X: ' + str(x).rjust(4) + ' Y: ' + str(y).rjust(4) 
    r = int(str(pixelColor[0]).rjust(3)) 
    g = int(str(pixelColor[1]).rjust(3)) 
    b = int(str(pixelColor[2]).rjust(3)) 
    hex = "#{:02x}{:02x}{:02x}".format(r,g,b) 
    hexstr=str(hex) 
    res= ss + ' RGB: ('+ str(r) +','+ str(g) +','+ str(b) +') '+ 'HEX: '+ 
    hexstr 
    print_no_newline(res) 
    time.sleep(1.0) 
except KeyboardInterrupt: 
    print("\nDone...") 
나중에라도

res= ss + ' RGB: ('+ str(r) +','+ str(g) +','+ str(b) +') '+ 'HEX: '+ 
hexstr[:7] 

를 사용 헥스 제 6 개 문자를 반환 hexstr 클립하려고하지만

샘플 출력

X 작동 didnt하는

489 Y를 : 622 RGB : (0,2,130) 16 진수 : # 000282eff

X : 545 Y : 710 RGB : (0,0,0) HEX : # 000000f1f1f1

이전 위치에서 가비지 값을 반환하고 있습니까?

답변

0

콘솔에서 항상 같은 줄을 덮어 쓰게됩니다. 이전 출력에 더 많은 문자가있는 경우 이러한 문자가 그대로 유지됩니다.

예를 들면 다음과 같습니다. "testing \ rlook"콘솔에 "ing"이 겹쳐 쓰여지지 않으므로 "looking"이됩니다.

해결책 : 출력에 충분한 공백을 추가하십시오.

0

형식화 된 출력을 지원하고 공백을 처리하는 데 도움이되는 "인쇄"기능을 사용해보십시오. Here은 도움이 될만한 링크입니다.