首页 > 其他分享 >py屏幕颜色信息提取

py屏幕颜色信息提取

时间:2024-10-28 11:02:19浏览次数:3  
标签:color menu py 信息提取 label HSV HSL 屏幕 root

from tkinter import simpledialog, messagebox from colorspacious import cspace_convert from PIL import Image from PIL import ImageGrab
import atexit import tkinter as tk import pyautogui import colorspacious import colorsys import numpy as np
# 创建主窗口 root = tk.Tk() root.title("GetPixelColor") root.iconbitmap("xxxxx.ico")  # 替换为图标文件的实际路径 root.geometry("400x200") # root.attributes("-topmost", True) #窗口固定前端显示 # 创建菜单条 menu_bar = tk.Menu(root) root.config(menu=menu_bar)
# 创建“视图”菜单 view_menu = tk.Menu(menu_bar, tearoff=0) menu_bar.add_cascade(label="视图", menu=view_menu) # view_menu.add_separator()  # 添加分隔符 # view_menu.add_command(label="刷新窗口", command=lambda: root.update())
# 创建菜单项来设置窗口是否在最上层 topmost_var = tk.BooleanVar()  # 创建一个布尔变量来存储窗口是否在最上层的状态 topmost_var.set(False)  # 默认窗口不在最上层
def set_topmost(state):     topmost_var.set(state)     root.attributes("-topmost", state)  # 设置窗口是否在最上层
# 添加“始终在最上层”菜单项,并设置命令 view_menu.add_checkbutton(label="前端显示", variable=topmost_var, command=lambda: set_topmost(topmost_var.get()))
# 创建“关于”菜单 about_menu = tk.Menu(menu_bar, tearoff=0) menu_bar.add_cascade(label="关于", menu=about_menu)
# 添加“关于”菜单项(示例) about_menu.add_command(label="关于本软件", command=lambda: messagebox.showinfo("关于", "提取鼠标位置的颜色信息,每100ms刷新一次信息。")) about_menu.add_command(label="版本信息", command=lambda: messagebox.showinfo("版本", "v2024.10.28.01"))

# 创建并放置标签,用于显示鼠标位置 label_position = tk.Label(root, text="鼠标位置: X=?, Y=?") label_position.grid(row=1, column=0, padx=5, pady=5, sticky="w")  # 使用grid方法,设置sticky="w"左对齐
# 创建用于显示颜色信息的标签 color_label_rgb = tk.Label(root, text="位置 ({x}, {y}) 的RGB值是: ???") color_label_rgb.grid(row=2, column=0, padx=5, pady=5, sticky="w")  # 使用grid方法,设置sticky="w"左对齐 color_label_lab = tk.Label(root, text="位置 ({x}, {y}) 的LAB值是: ???") color_label_lab.grid(row=3, column=0, padx=5, pady=5, sticky="w")  # 使用grid方法,设置sticky="w"左对齐 color_label_hsv = tk.Label(root, text="位置 ({x}, {y}) 的HSV值是: ???") color_label_hsv.grid(row=4, column=0, padx=5, pady=5, sticky="w")  # 使用grid方法,设置sticky="w"左对齐 color_label_hsl = tk.Label(root, text="位置 ({x}, {y}) 的HSL值是: ???") color_label_hsl.grid(row=5, column=0, padx=5, pady=5, sticky="w")  # 使用grid方法,设置sticky="w"左对齐
def get_screen_color(event=None):     # 获取鼠标当前位置     x, y = root.winfo_pointerxy()  # 获取相对于屏幕的x坐标     #y = root.winfo_pointery()  # 获取相对于屏幕的y坐标     # 更新标签文本     label_position.config(text=f"鼠标位置: X={x}, Y={y}")     0.     if x is None or y is None:         messagebox.showerror("鼠标位置错误", "移动鼠标位置至屏幕取色位置")         return     #    # 获取屏幕截图并提取颜色     screenshot = pyautogui.screenshot()     rgb_color = screenshot.getpixel((x, y))
    # 在界面上显示RGB颜色信息_10进制     color_label_rgb.config(text=f"位置 ({x}, {y}) 的颜色RGB是: {rgb_color}")           # rgb转换到0到1范围     rgb_color_normalized = tuple(c / 255.0 for c in rgb_color)     lab_color = colorspacious.cspace_convert(rgb_color_normalized, "sRGB1", "CIELab")     lab_color_rounded2 = tuple(float(round(value , 2)) for value in lab_color)     hsv_color = colorsys.rgb_to_hsv(*rgb_color_normalized)     HSV_h_color, HSV_s_color, HSV_v_color = hsv_color     HSV_h = round(float(HSV_h_color * 360.0), 2)     HSV_s = round(float(HSV_s_color * 100.0), 2)     HSV_v = round(float(HSV_v_color * 100.0), 2)
    hsl_color = colorsys.rgb_to_hls(*rgb_color_normalized)     HSL_h_color, HSL_l_color, HSL_s_color = hsl_color     HSL_h = round(HSL_h_color * 360, 2)     HSL_s = round(HSL_s_color * 100, 2)     HSL_l = round(HSL_l_color * 100, 2)

    # 在界面上显示RGB颜色信息_10进制     color_label_lab.config(text=f"位置 ({x}, {y}) 的LAB值是: {lab_color_rounded2}")       color_label_hsv.config(text=f"位置 ({x}, {y}) 的HSV值是: {HSV_h, HSV_s, HSV_v}")       color_label_hsl.config(text=f"位置 ({x}, {y}) 的HSL值是: {HSL_h, HSL_s, HSL_l}")                         root.after(100, get_screen_color)
# 设置定时器,每隔100毫秒更新一次鼠标位置和颜色信息 root.after(100, get_screen_color)
# 在启动时调用一次函数以获取初始颜色 get_screen_color()
# 定义在程序退出时要执行的清理函数 def cleanup():     # 这里可以添加任何需要在程序退出前执行的清理操作     # 对于Tkinter,通常不需要手动销毁窗口,因为mainloop退出时会自动销毁     # 但如果你有其他需要清理的资源,可以在这里添加代码     print("程序即将退出,执行清理操作...")
# 注册清理函数 atexit.register(cleanup)
# 启动主循环 try:     root.mainloop() except KeyboardInterrupt:  # 处理Ctrl+C中断     print("检测到Ctrl+C,程序即将退出...")     root.destroy()  # 确保Tk窗口被销毁(尽管在atexit中通常不需要,但这里为了完整性添加)

标签:color,menu,py,信息提取,label,HSV,HSL,屏幕,root
From: https://www.cnblogs.com/abs8023/p/18509921

相关文章

  • 【最新华为OD机试E卷-支持在线评测】机器人活动区域(200分)多语言题解-(Python/C/Java
    ......
  • pytest实现按业务线来执行,各业务线下的业务测试用例
    importargparseimportpytestdefmain():parser=argparse.ArgumentParser(description='Runspecificbusinesslinetests.')parser.add_argument('--line',choices=['line_1','line_2'],required=True,......
  • python知识点
    id()获取数据(对象)的内存地址is比较是地址是否相同,==是比较值是否相同代码块缓存机制(适用类型:int(float)、bool、str同一代码块)      执行同一个代码块时,遇到初始化对象的命令时,他会将初始化的这个变量与值存储在一个字典中,在遇到新的变量时,会先在字典中查询记 ......
  • 初级python代码编程学习----简单的查看当前ip地址的图形化工具
    以下是一个使用Python的tkinter库创建图形化界面来查看当前IP地址的工具代码:代码importtkinterastkimportsocketdefget_ip_address():try:s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)s.connect(("8.8.8.8",80))ip......
  • python 正则表达式
    python使用正则表达式re.searchsearchObj=re.search(r'正则表达式',line,flag)ifsearchObj:print"searchObj.group():",searchObj.group()#查看匹配到的字符串print"searchObj.group():",searchObj.group(1)#查看第一个捕获组的内容print"......
  • Pycharm专业版远程连接服务器训练模型以及注意事项
    本文主要讲解租用AutoDL远程服务器、Pycharm远程连接服务器、上传代码、模型训练以及注意事项。第一次租用后,会发现这个过程很简单,希望帮到你!多余的话没有,跟着步骤来就可以啦!(*^▽^*)导航    1.租用服务器    2.Pycharm远程连接    3.上传代码  ......
  • 实例代码演示教你如何免费获取股票数据(用python、JavaScript等多种语言获取实时数据、
    ​近一两年来,股票量化分析逐渐受到广泛关注。而作为这一领域的初学者,首先需要面对的挑战就是如何获取全面且准确的股票数据。因为无论是实时交易数据、历史交易记录、财务数据还是基本面信息,这些数据都是我们进行量化分析时不可或缺的宝贵资源。我们的核心任务是从这些数据......
  • Python包——Matplotlib
            Matplotlib是Python中一个广泛使用的绘图库,它能够生成高质量的图表和图形。它提供了一个类似于MATLAB的绘图框架,使得数据可视化变得简单和直观。下面是一些关于如何使用Matplotlib的基础知识和示例。1.常用API1.1绘图类型函数名称描述Bar绘制条形......
  • Python算法学习2-序列
    序列名[下标]或序列名[-序号]引用序列中各个元素s="abcdefg"s[0]#'a's[6]#'g's[-1]#'g's[-7]#'a's[-4]#'d'列表len()可以求列表中元素个数list()可将迭代类型转化成列表s='abcdefg's=list(s)#s=['a','b','......
  • (赠源码)基于python+HTML5+flask+mysql技术的酒店在线系统的设计与实现89223-计算机毕业
    目录1绪论1.1课题背景及意义1.1.1课题背景1.1.2课题意义1.2 研究现状1.2.1国外研究现状1.2.2 国内研究现状2 开发工具和开发平台2.1关键性知识及技术简介2.1.1HTML5介绍2.1.2 Flask框架概述2.2Python简介2.3 开发环境及工具3系统分......