from tkinter import ttk
import pyautogui
import keyboard
import pyperclip
from PIL import ImageGrab
class ColorPicker:
def __init__(self):
# 创建主窗口
self.root = tk.Tk()
self.root.title("屏幕取色工具")
self.root.geometry("400x350")
self.root.resizable(False, False)
# 创建显示框架
self.frame = ttk.Frame(self.root, padding="10")
self.frame.grid(row=0, column=0, sticky=(tk.W, tk.E, tk.N, tk.S))
# 颜色预览区域
self.color_preview = tk.Canvas(self.frame, width=150, height=150)
self.color_preview.grid(row=0, column=0, columnspan=2, pady=5)
# 鼠标位置显示
self.pos_var = tk.StringVar()
self.pos_label = ttk.Label(self.frame, textvariable=self.pos_var)
self.pos_label.grid(row=1, column=0, columnspan=2, pady=5)
# RGB值显示
self.rgb_var = tk.StringVar()
self.rgb_label = ttk.Label(self.frame, textvariable=self.rgb_var)
self.rgb_label.grid(row=2, column=0, columnspan=2, pady=5)
# HEX值显示
self.hex_var = tk.StringVar()
self.hex_label = ttk.Label(self.frame, textvariable=self.hex_var)
self.hex_label.grid(row=3, column=0, columnspan=2, pady=5)
# 提示文本
ttk.Label(self.frame, text="按住空格键取色,松开空格键复制HEX值").grid(row=4, column=0, columnspan=2, pady=5)
# 初始化变量
self.is_picking = True
# 绑定快捷键
keyboard.on_press_key("space", self.start_picking)
keyboard.on_release_key("space", self.stop_picking)
# 开始更新循环
self.update_color()
# 将窗口置顶
self.root.attributes('-topmost', True)
self.root.mainloop()
def start_picking(self, _):
self.is_picking = True
# 最小化窗口以避免干扰取色
self.root.iconify()
def stop_picking(self, _):
if self.is_picking:
self.is_picking = False
# 恢复窗口显示
self.root.deiconify()
# 复制HEX值到剪贴板
hex_color = self.hex_var.get()
if hex_color:
pyperclip.copy(hex_color)
def update_color(self):
try:
# 获取鼠标位置的颜色
x, y = pyautogui.position()
# 使用PIL的ImageGrab代替pyautogui.screenshot以提高性能
pixel = ImageGrab.grab(bbox=(x, y, x+1, y+1)).getpixel((0, 0))
# 更新鼠标位置显示
pos_text = f"鼠标位置: X={x}, Y={y}"
self.pos_var.set(pos_text)
# 更新RGB显示
rgb_text = f"RGB: {pixel[0]}, {pixel[1]}, {pixel[2]}"
self.rgb_var.set(rgb_text)
# 更新HEX显示
hex_color = '#{:02x}{:02x}{:02x}'.format(pixel[0], pixel[1], pixel[2])
self.hex_var.set(hex_color)
# 更新预览区域
self.color_preview.configure(bg=hex_color)
except Exception as e:
print(f"取色错误: {str(e)}")
# 每10ms更新一次
self.root.after(10, self.update_color)
if __name__ == "__main__":
ColorPicker()

打开后会实时监控鼠标位置颜色;按一下空格会拷贝颜色为#的
通过网盘分享的文件:颜色快捷取色.exe
链接: https://pan.baidu.com/s/12qyPK4Zo7FE3H6HFUJKx6Q?pwd=hzhz 提取码: hzhz