2017-10-04 3 views
0

Dieser Code gibt die aktuellen X-Y-Koordinaten, RGB-Werte und HEX-Werte des Mauszeigers an. Die Koordinaten und RGB-Werte sind korrekt, aber nach einiger Zeit ergeben die Hex-Werte das falsche Ergebnis.Fehler beim Zurückgeben von HEX-Werten im Python-Code des Mauszeigers

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...") 

ich später sogar versucht, die hexstr Clip ersten 6 Zeichen von Hex zurückzukehren

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

verwenden, aber es hat nicht

Musterausgänge

X arbeiten: 489 Y: 622 RGB: (0,2,130) HEX: # 000282eff

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

Gibt es die Müllwerte von der vorherigen Position zurück?

Antwort

0

Sie überschreiben immer dieselbe Zeile in der Konsole. Wenn die vorherige Ausgabe mehr Zeichen hatte, bleiben diese erhalten.

Wenn Sie z.B. "Testing \ rlook", um es zu trösten, wird zu "suchen" führen, weil das "ing" nicht überschrieben wird.

Lösung: Fügen Sie genügend Leerzeichen an Ihre Ausgabe an.

0

Probieren Sie die "print" -Funktion, die formatierte Ausgabe unterstützt und hilft den Umgang mit Leerzeichen. Here ist ein Link, der Ihnen helfen könnte.

Verwandte Themen