【Python】屏幕像素颜色值的获取
一、一个小工具,按住F10键,颜色值会跟着显示。
import tkinter as tk
import pyautogui
import keyboardclass ColorViewer:def __init__(self):self.root = tk.Tk()self.root.overrideredirect(True) # 无边框self.root.wm_attributes("-topmost", 1) # 最前self.root.configure(bg="black")self.root.geometry("140x60")self.color_frame = tk.Frame(self.root, width=24, height=48, bg="white")self.color_frame.place(x=5, y=5)self.hex_label = tk.Label(self.root, text="#------", font=("Consolas", 13), bg="black", fg="white")self.hex_label.place(x=35, y=5)self.coord_label = tk.Label(self.root, text="(0000,0000)", font=("Consolas", 11), bg="black", fg="white")self.coord_label.place(x=35, y=30)self.update_loop()self.root.withdraw() # 初始隐藏self.root.mainloop()def update_loop(self):if keyboard.is_pressed("F10"):x, y = pyautogui.position()r, g, b = pyautogui.screenshot(region=(x, y, 1, 1)).getpixel((0, 0))hex_color = "#{:02x}{:02x}{:02x}".format(r, g, b)self.color_frame.configure(bg=hex_color)self.hex_label.configure(text=hex_color)self.coord_label.configure(text=f"({x},{y})")# 自动移动窗口,避免遮挡鼠标screen_w = self.root.winfo_screenwidth()screen_h = self.root.winfo_screenheight()win_w, win_h = 140, 60offset = 20pos_x = x + offsetpos_y = y + offsetif pos_x + win_w > screen_w:pos_x = x - win_w - offsetif pos_y + win_h > screen_h:pos_y = y - win_h - offsetself.root.geometry(f"{win_w}x{win_h}+{pos_x}+{pos_y}")self.root.deiconify()else:self.root.withdraw()self.root.after(30, self.update_loop) # 循环检查if __name__ == "__main__":ColorViewer()
二、样式示例