PyQt5搭建的一个取色器,一共写了两款应用,一款使用快捷键捕获鼠标附近图像的RGB和16进制颜色编码,一款跟随鼠标刷新图像的RGB和16进制颜色编码。桌面应用程序的背景色切换也可以参考此程序。
源程序的git地址: gitee.com/mtoooo/colo…
打包的exe下载链接: gitee.com/mtoooo/colo…
取色器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进制颜色编码。
- 源程序初始化
```shell
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_())