当前位置: 代码网 > it编程>编程语言>C/C++ > 使用PyQt5编写一个简单的取色器

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

2025年01月16日 C/C++ 我要评论
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 = 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取色器内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com