此代码提供鼠标指针的即时X-Y坐标,RGB值和HEX值。坐标和RGB值是正确的,但在某些时候,十六进制值会给出错误的结果。
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...")
我后来甚至尝试使用
剪辑hexstr以返回前六个字符的十六进制res= ss + ' RGB: ('+ str(r) +','+ str(g) +','+ str(b) +') '+ 'HEX: '+
hexstr[:7]
但它没有用
示例输出
X:489 Y:622 RGB:(0,2,130)HEX:#000282eff
X:545 Y:710 RGB:(0,0,0)HEX:#000000f1f1f1
是否从之前的位置返回垃圾值?
答案 0 :(得分:0)
您始终在控制台中覆盖同一行。如果以前的输出有更多的字符,则这些字符仍然存在。
如果你写的话 解决方案:在输出中附加足够的空格。