在鼠标指针的python代码中返回HEX值时出错

时间:2017-10-04 00:09:31

标签: python python-3.x hex rgb pyautogui

此代码提供鼠标指针的即时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

是否从之前的位置返回垃圾值?

1 个答案:

答案 0 :(得分:0)

您始终在控制台中覆盖同一行。如果以前的输出有更多的字符,则这些字符仍然存在。

如果你写的话

解决方案:在输出中附加足够的空格。