在鼠标点的python代码中返回十六进制值时出错

2024-04-25 22:22:20 发布

您现在位置:Python中文网/ 问答频道 /正文

此代码给出鼠标指针的即时X-Y坐标、RGB值和十六进制值。坐标和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以返回hex的前6个字符

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

但没用

样本输出

X:489 Y:622 RGB:(0,2130)十六进制:#000282eff

X:545 Y:710 RGB:(0,0,0)十六进制:#000000f1f1

它是否从上一个位置返回垃圾值?你知道吗


Tags: importtimestdoutsysresrgbhexstrss