您当前的位置:首页 > 计算机 > 编程开发 > Python

Python 超快捷颜色选取拷贝

时间:08-27来源:作者:点击数:

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

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐