超快捷颜色选取拷贝

查看 62|回复 9
作者:Hf6824329   
[Python] 纯文本查看 复制代码import tkinter as tk
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

鼠标, 颜色

jln1993   

好厉害支持一下
chshxp   

这个东西好。支持一下!收藏待用。
Zhang132   

还不算短小精悍,谢谢。
zhang94264   

这个好!专业~~
hantianwei   

这个好,真的很不错,就不用查颜色代码,还能提取颜色
r2r   

很实用,感谢分享
daoye9988   

复制颜色就是那么方便了
lengquan518   

好东西,正需要,感谢楼主分享
fengyuan2210   

可以使用一下,楼主厉害
您需要登录后才可以回帖 登录 | 立即注册

返回顶部