一、一个小工具,按住F10键,颜色值会跟着显示。
import tkinter as tk
import pyautogui
import keyboard
class 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, 60
offset = 20
pos_x = x + offset
pos_y = y + offset
if pos_x + win_w > screen_w:
pos_x = x - win_w - offset
if pos_y + win_h > screen_h:
pos_y = y - win_h - offset
self.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()
二、样式示例