使用PyQt5编写一个简单的取色器
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
交互效果

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 = 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 = 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.exit(app.exec_())
取色器2
源代码参考main2.py, 也可以下载取色器2.exe文件直接使用,无需快捷键运行即可使用,应用程序会显示RGB和16进制颜色编码。
- 源程序初始化
pip install PyQt5==5.15.10
程序启动
python main2.py
交互效果

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 = 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.exit(app.exec_())
到此这篇关于使用PyQt5编写一个简单的取色器的文章就介绍到这了,更多相关PyQt5取色器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
浅谈Python3识别判断图片主要颜色并和颜色库进行对比的方法
这篇文章主要介绍了浅谈Python3识别判断图片主要颜色并和颜色库进行对比的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-10-10
Python cookbook(数据结构与算法)根据字段将记录分组操作示例
这篇文章主要介绍了Python cookbook(数据结构与算法)根据字段将记录分组操作,结合实例形式分析了itertools.groupby()函数针对字典进行分组操作的相关实现技巧,需要的朋友可以参考下2018-03-03


最新评论