本文主要是介绍使用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
交互效果
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
交互效果
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编写一个简单的取色器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!