使用PyQt5编写一个简单的取色器

2025-01-16 04:50

本文主要是介绍使用PyQt5编写一个简单的取色器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《使用PyQt5编写一个简单的取色器》:本文主要介绍PyQt5搭建的一个取色器,一共写了两款应用,一款使用快捷键捕获鼠标附近图像的RGB和16进制颜色编码,一款跟随鼠标刷新图像的RGB和16...

PyQt5搭建的一个取色器,一共写了两款应用,一款使用快捷键捕获鼠标附近图像的RGB和16进制颜色编码,一款跟随鼠标刷新图像的RGB和16进制颜色编码。桌面应用程序的背景色切换也可以参考此程序。

源程序的git地址: gitee.com/mtoooo/color_picker

打包的exe下载链接: gitee.com/mtoooo/color_picker

取色器1

源代码参考main.py,也可以点击顶部exe链接下载取色器.exe文件直接使用,取色快捷键Shift+A,应用程序会显示RGB和16进制颜色编码。

源程序初始化

pip install PyQt5==5.15.10

程序启动

python main.py

取色快捷键Shift+A

交互效果

使用PyQt5编写一个简单的取色器

main.py

import sys
from PyQt5.QtCore import Qt, QTimer
from PyQt5.QtGui import QColor, QPixmap, QCursor, QPainter, QPen, QBrush
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QvboxLayout, QHBoxLayout

class ColorPickerApp(QWidget):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("Color Picker")
        self.setGeometry(100, 100, 300, 200)

        # 创建标签,用于显示 RGB 和 16 进制颜色
        self.rgb_hex_label = QChina编程Label("RGB: None\nHex: None", self)

        # 设置标签样式和大小
        self.rgb_hex_label.setFixedSize(150, 50)  # 设置固定大小 100x50
        self.rgb_hex_label.setStyleSheet("font-size: 12px; padding: 5px; border-radius: 5px; background-color: white; border: 1px solid black;")

        # 设置布局,使用 QHBoxLayout 和 QVBoxLayout 居中显示标签
        layout = QVBoxLayout(self)
        layout.setAlignment(Qt.AlignCenter)  # 设置垂直布局居中
        layout.addwidget(self.rgb_hex_label)
        self.setLayout(layout)

        # 定时器用于定时获取颜色信息
        self.timer = QTimer(self)
        self.timer.timeout.connect(self.update_color)
        self.timer.start(100)  # 每100毫秒更新一次

        # 用来存储背景颜色
        self.bg_color = QColor(255, 255, 255)  # 默认背景为白色

    def update_color(self):
        # 获取鼠标位置
        cursor_pos = QCursor.pos()

        # 获取屏幕截图并获取当前鼠标位置的颜色
        screen = QApplication.primaryScreen()
        pixmap = screen.grabWindow(0)
        color = QColor(pixmap.toImage().pixel(cursor_pos))

        # 获取 RGB 和 16 进制颜色值
        rgb = color.getRgb()
        hex_color = color.name()

        # 更新标签显示颜色信息
        self.rgb_hex_label.setText(f"RGB: {rgb[0]}, {rgb[1]}, {rgb[2]}\nHex: {hex_color}")

        # 改变窗口背景色
        self.bg_color = color

        # 刷新窗口
        self.update()

    def paintEvent(self, event):
        # 绘制背景颜色
        painter = QPainter(self)
        painter.setBrush(QBrush(self.bg_color))
        painter.setPen(Qt.NoPen)
        painter.drawRect(self.rect())  # 填充整个窗口背景

        painter.end()


if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = ColorPickerApp()
    window.show()
    sys编程China编程.exit(app.exec_())

取色器2

源代码参考main2.py, 也可以下载取色器2.exe文件直接使用,无需快捷键运行即可使用,应用程序会显示RGB和16进制颜色编码。

- 源程序初始化

pip install PyQt5==5.15.10

程序启动

python main2.py

交互效果

使用PyQt5编写一个简单的取色器

main2.py

import sys
from PyQt5.QtCore import Qt, QTimer
from PyQt5.QtGui import QColor, QPixmap, QCursor, QPainter, QPen, QBrush
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QVBoxLayout, QHBoxLayout

class ColorPickerApp(QWidget):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("Color Picker")
        self.setGeometry(100, 100, 300, 200)

        # 创建标签,用于显示 RGB 和 16 进制颜色
        self.rgb_hex_label = QLabel("RGB: None\nHex: None", self)

        # 设置标签样式和大小
        self.rgb_hex_label.setFixedSize(150, 50)  # 设置固定大小 100x50
        self.rgb_hex_label.setStyleSheet("font-size: 12px; padding: 5px; border-radius: 5px; background-color: white; border: 1px solid black;")

        # 设置布局,使用 QHBoxLayout 和 QVBoxLayout 居中显示标签
        layout = QVBoxLayoutasWDWq(self)
        layout.setAlignment(Qt.AlignCenter)  # 设置垂直布局居中
        layout.addWidget(self.rgb_hex_label)
        self.setLayout(layout)

        # 定时器用于定时获取颜色信息
        self.timer = QTimer(self)
        self.timer.timeout.connect(self.update_color)
        self.timer.start(100)  # 每100毫秒更新一次

        # 用来存储背景颜色
        self.bg_color = QColor(255, 255, 255)  # 默认背景为白色

    def update_color(self):
      php  # 获取鼠标位置
        cursor_pos = QCursor.pos()

        # 获取屏幕截图并获取当前鼠标位置的颜色
        screen = QApplication.primaryScreen()
        pixmap = screen.grabWindow(0)
        color = QColor(pixmap.toImage().pixel(cursor_pos))

        # 获取 RGB 和 16 进制颜色值
        rgb = color.getRgb()
        hex_color = color.name()

        # 更新标签显示颜色信息
        self.rgb_hex_label.setText(f"RGB: {rgb[0]}, {rgb[1]}, {rgb[2]}\nHex: {hex_color}")

        # 改变窗口背景色
        self.bg_color = color

     www.chinasem.cn   # 刷新窗口
        self.update()

    def paintEvent(self, event):
        # 绘制背景颜色
        painter = QPainter(self)
        painter.setBrush(QBrush(self.bg_color))
        painter.setPen(Qt.NoPen)
        painter.drawRect(self.rect())  # 填充整个窗口背景

        painter.end()


if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = ColorPickerApp()
    window.show()
    sys.exit(app.exec_())

到此这篇关于使用PyQt5编写一个简单的取色器的文章就介绍到这了,更多相关PyQt5取色器内容请搜索China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持China编程(www.chinasem.cn)!

这篇关于使用PyQt5编写一个简单的取色器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1153078

相关文章

redis群集简单部署过程

《redis群集简单部署过程》文章介绍了Redis,一个高性能的键值存储系统,其支持多种数据结构和命令,它还讨论了Redis的服务器端架构、数据存储和获取、协议和命令、高可用性方案、缓存机制以及监控和... 目录Redis介绍1. 基本概念2. 服务器端3. 存储和获取数据4. 协议和命令5. 高可用性6.

SpringBoot中使用 ThreadLocal 进行多线程上下文管理及注意事项小结

《SpringBoot中使用ThreadLocal进行多线程上下文管理及注意事项小结》本文详细介绍了ThreadLocal的原理、使用场景和示例代码,并在SpringBoot中使用ThreadLo... 目录前言技术积累1.什么是 ThreadLocal2. ThreadLocal 的原理2.1 线程隔离2

Python itertools中accumulate函数用法及使用运用详细讲解

《Pythonitertools中accumulate函数用法及使用运用详细讲解》:本文主要介绍Python的itertools库中的accumulate函数,该函数可以计算累积和或通过指定函数... 目录1.1前言:1.2定义:1.3衍生用法:1.3Leetcode的实际运用:总结 1.1前言:本文将详

浅析如何使用Swagger生成带权限控制的API文档

《浅析如何使用Swagger生成带权限控制的API文档》当涉及到权限控制时,如何生成既安全又详细的API文档就成了一个关键问题,所以这篇文章小编就来和大家好好聊聊如何用Swagger来生成带有... 目录准备工作配置 Swagger权限控制给 API 加上权限注解查看文档注意事项在咱们的开发工作里,API

Java数字转换工具类NumberUtil的使用

《Java数字转换工具类NumberUtil的使用》NumberUtil是一个功能强大的Java工具类,用于处理数字的各种操作,包括数值运算、格式化、随机数生成和数值判断,下面就来介绍一下Number... 目录一、NumberUtil类概述二、主要功能介绍1. 数值运算2. 格式化3. 数值判断4. 随机

Spring排序机制之接口与注解的使用方法

《Spring排序机制之接口与注解的使用方法》本文介绍了Spring中多种排序机制,包括Ordered接口、PriorityOrdered接口、@Order注解和@Priority注解,提供了详细示例... 目录一、Spring 排序的需求场景二、Spring 中的排序机制1、Ordered 接口2、Pri

Springboot 中使用Sentinel的详细步骤

《Springboot中使用Sentinel的详细步骤》文章介绍了如何在SpringBoot中使用Sentinel进行限流和熔断降级,首先添加依赖,配置Sentinel控制台地址,定义受保护的资源,... 目录步骤 1: 添加 Sentinel 依赖步骤 2: 配置 Sentinel步骤 3: 定义受保护的

Python中Markdown库的使用示例详解

《Python中Markdown库的使用示例详解》Markdown库是一个用于处理Markdown文本的Python工具,这篇文章主要为大家详细介绍了Markdown库的具体使用,感兴趣的... 目录一、背景二、什么是 Markdown 库三、如何安装这个库四、库函数使用方法1. markdown.mark

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

CSS3中使用flex和grid实现等高元素布局的示例代码

《CSS3中使用flex和grid实现等高元素布局的示例代码》:本文主要介绍了使用CSS3中的Flexbox和Grid布局实现等高元素布局的方法,通过简单的两列实现、每行放置3列以及全部代码的展示,展示了这两种布局方式的实现细节和效果,详细内容请阅读本文,希望能对你有所帮助... 过往的实现方法是使用浮动加