2017-10-04 5 views
0

このコードは、マウスポインターのX-Y座標、RGB値、およびHEX値を即座に示します。座標とRGB値は正しいですが、しばらくしてから、16進数の値が間違った結果になります。マウスポインターのPythonコードでHEX値を返すエラー

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はあなたを助けるかもしれないリンクです。

関連する問題