pythongui工具——取色器(代码片段)

肆拾伍 肆拾伍     2022-12-14     249

关键词:

一共三个py文件,分别保存为MyWindow.py (主文件) Qwindow.py (Qt生成的文件) 以及res_rc.py (资源文件),运行效果如下:

原理有什么不懂的可以留言问,我不想讲,代码都贴出来了。资源文件就是把那三张图片用代码存起来了,并没有什么内容,只是看起来很多。


# MyWindow.py
from Qwindow import Ui_mainWindow
from PyQt5.QtWidgets import QApplication,QMainWindow,QPushButton
import sys
from PyQt5.QtCore import Qt
from ctypes import *  # 获取屏幕上某个坐标的颜色
import pyautogui as pag
from threading import Timer



class RepeatingTimer(Timer):
    def run(self):
        while not self.finished.is_set():
            self.function(*self.args, **self.kwargs)
            self.finished.wait(self.interval)

class MyWindow(QMainWindow):
    def __init__(self):
        super(MyWindow, self).__init__()
        self.ui = Ui_mainWindow()
        self.ui.setupUi(self)
        self.ui.pushButton_25.clicked.connect(self.get_color)
        self.ui.pushButton_1.clicked.connect(self.slot1)
        self.ui.pushButton_2.clicked.connect(self.slot1)
        self.ui.pushButton_3.clicked.connect(self.slot1)
        self.ui.pushButton_4.clicked.connect(self.slot1)
        self.ui.pushButton_5.clicked.connect(self.slot1)
        self.ui.pushButton_6.clicked.connect(self.slot1)
        self.ui.pushButton_7.clicked.connect(self.slot1)
        self.ui.pushButton_8.clicked.connect(self.slot1)
        self.ui.pushButton_9.clicked.connect(self.slot1)
        self.ui.pushButton_10.clicked.connect(self.slot1)
        self.ui.pushButton_11.clicked.connect(self.slot1)
        self.ui.pushButton_12.clicked.connect(self.slot1)
        self.ui.start = False
        self.ui.t = 0
        self.ui.buttonrgb = [(255,255,255)]*12
        self.ui.buttonrgb1 = [(1,1,1)]*12
        self.ui.buttonrgb1 = [('#FFFFFF')]*12
        self.ui.setcounts = 0

    def get_color(self):
        self.ui.t = RepeatingTimer(0.2,self.Get_color)
        self.ui.t.start()

    def Get_color(self):
        self.ui.start = True
        x, y = pag.position()  # 返回鼠标的坐标
        gdi32 = windll.gdi32
        user32 = windll.user32
        hdc = user32.GetDC(None)  # 获取颜色值
        pixel = gdi32.GetPixel(hdc, x, y)  # 提取RGB值
        r = pixel & 0x0000ff
        g = (pixel & 0x00ff00) >> 8
        b = pixel >> 16
        self.ui.rgb = (r, g, b)
        self.ui.rgb1 = (round(r/255,2) ,round(g/255,2),round(b/255,2))
        self.ui.rgb2 = (hex(r*16*16*16*16+g*16*16+b))
        self.ui.toolButton.setStyleSheet("background-color: rgb"+str(self.ui.rgb))

    def set_colors(self):

        exec('self.ui.pushButton_' + str(self.ui.setcounts) + '.setStyleSheet('+'\\"background-color: rgb'+str(self.ui.rgb)+'\\")')
        self.ui.lineEdit.setText(str(list(self.ui.rgb)))
        self.ui.lineEdit_2.setText(str(list(self.ui.rgb1)))
        self.ui.lineEdit_3.setText(('#'+str(self.ui.rgb2).strip('0x')).upper())

    def slot1(self):
        def round2(x):
            return round(x,2)
        RGB = self.sender().palette().button().color().getRgb()
        RGB1 = self.sender().palette().button().color().getRgbF()
        RGB = RGB[0:3]
        RGB1 = RGB1[0:3]
        RGB1 = tuple(map(round2,RGB1))
        self.ui.lineEdit.setText(str(list(RGB)))
        self.ui.lineEdit_2.setText(str(list(RGB1)))
        self.ui.lineEdit_3.setText(('#'+str(hex(RGB[0]*256*256+RGB[1]*256+RGB[2])).strip('0x')).upper())
        self.ui.toolButton.setStyleSheet("background-color: rgb"+str(RGB))



    def keyPressEvent(self, event):
        if self.ui.start ==False:
            return
        elif event.key() == Qt.Key_Enter-1:
            self.ui.t.cancel()
            self.ui.start = False
            self.ui.setcounts = self.ui.setcounts%12 +1
            self.set_colors()
            self.ui.buttonrgb[self.ui.setcounts%12 -1] = self.ui.rgb
            self.ui.buttonrgb1[self.ui.setcounts%12 -1] = self.ui.rgb1


if __name__ == "__main__":
    app = QApplication(sys.argv)
    Qwindow = MyWindow()
    Qwindow.show()
    sys.exit(app.exec_())
Qwindow.py

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'mainwindow.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_mainWindow(object):
    def setupUi(self, mainWindow):
        mainWindow.setObjectName("mainWindow")
        mainWindow.setEnabled(True)
        mainWindow.resize(493, 354)
        palette = QtGui.QPalette()
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush)
        mainWindow.setPalette(palette)
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(":/icons/res/icons/edit.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        mainWindow.setWindowIcon(icon)
        mainWindow.setStyleSheet("")
        self.centralwidget = QtWidgets.QWidget(mainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.toolButton = QtWidgets.QToolButton(self.centralwidget)
        self.toolButton.setGeometry(QtCore.QRect(20, 20, 91, 91))
        self.toolButton.setStyleSheet("background-color: rgb(255, 255, 255)")
        self.toolButton.setText("")
        self.toolButton.setObjectName("toolButton")
        self.formLayoutWidget = QtWidgets.QWidget(self.centralwidget)
        self.formLayoutWidget.setGeometry(QtCore.QRect(170, 20, 271, 91))
        self.formLayoutWidget.setObjectName("formLayoutWidget")
        self.formLayout = QtWidgets.QFormLayout(self.formLayoutWidget)
        self.formLayout.setContentsMargins(0, 0, 0, 0)
        self.formLayout.setObjectName("formLayout")
        self.label_2 = QtWidgets.QLabel(self.formLayoutWidget)
        self.label_2.setAlignment(QtCore.Qt.AlignCenter)
        self.label_2.setObjectName("label_2")
        self.formLayout.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.label_2)
        self.label_3 = QtWidgets.QLabel(self.formLayoutWidget)
        self.label_3.setAlignment(QtCore.Qt.AlignCenter)
        self.label_3.setObjectName("label_3")
        self.formLayout.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.label_3)
        self.label = QtWidgets.QLabel(self.formLayoutWidget)
        self.label.setAlignment(QtCore.Qt.AlignCenter)
        self.label.setObjectName("label")
        self.formLayout.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.label)
        self.lineEdit = QtWidgets.QLineEdit(self.formLayoutWidget)
        self.lineEdit.setAlignment(QtCore.Qt.AlignCenter)
        self.lineEdit.setObjectName("lineEdit")
        self.formLayout.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.lineEdit)
        self.lineEdit_2 = QtWidgets.QLineEdit(self.formLayoutWidget)
        self.lineEdit_2.setAlignment(QtCore.Qt.AlignCenter)
        self.lineEdit_2.setObjectName("lineEdit_2")
        self.formLayout.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.lineEdit_2)
        self.lineEdit_3 = QtWidgets.QLineEdit(self.formLayoutWidget)
        self.lineEdit_3.setAlignment(QtCore.Qt.AlignCenter)
        self.lineEdit_3.setObjectName("lineEdit_3")
        self.formLayout.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.lineEdit_3)
        self.pushButton_1 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_1.setGeometry(QtCore.QRect(200, 125, 40, 40))
        self.pushButton_1.setStyleSheet("background-color: rgb(255, 255, 255)")
        self.pushButton_1.setText("")
        self.pushButton_1.setObjectName("pushButton_1")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(240, 125, 40, 40))
        self.pushButton_2.setStyleSheet("background-color: rgb(255, 255, 255)")
        self.pushButton_2.setText("")
        self.pushButton_2.setObjectName("pushButton_2")
        self.pushButton_3 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_3.setGeometry(QtCore.QRect(280, 125, 40, 40))
        self.pushButton_3.setStyleSheet("background-color: rgb(255, 255, 255)")
        self.pushButton_3.setText("")
        self.pushButton_3.setObjectName("pushButton_3")
        self.pushButton_6 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_6.setGeometry(QtCore.QRect(400, 125, 40, 40))
        self.pushButton_6.setStyleSheet("background-color: rgb(255, 255, 255)")
        self.pushButton_6.setText("")
        self.pushButton_6.setObjectName("pushButton_6")
        self.pushButton_4 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_4.setGeometry(QtCore.QRect(320, 125, 40, 40))
        self.pushButton_4.setStyleSheet("background-color: rgb(255, 255, 255)")
        self.pushButton_4.setText("")
        self.pushButton_4.setObjectName("pushButton_4")
        self.pushButton_5 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_5.setGeometry(QtCore.QRect(360, 125, 40, 40))
        self.pushButton_5.setStyleSheet("background-color: rgb(255, 255, 255)")
        self.pushButton_5.setText("")
        self.pushButton_5.setObjectName("pushButton_5")
        self.label_4 = QtWidgets.QLabel(self.centralwidget)
        self.label_4.setGeometry(QtCore.QRect(60, 140, 81, 51))
        self.label_4.setAlignment(QtCore.Qt.AlignCenter)
        self.label_4.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse)
        self.label_4.setObjectName("label_4")
        self.pushButton_25 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_25.setGeometry(QtCore.QRect(350, 260, 111, 31))
        icon1 = QtGui.QIcon()
        icon1.addPixmap(QtGui.QPixmap(":/icons/res/icons/ok.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.pushButton_25.setIcon(icon1)
        self.pushButton_25.setObjectName("pushButton_25")
        self.pushButton_26 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_26.setEnabled(False)
        self.pushButton_26.setFlat(True)
        self.pushButton_26.setGeometry(QtCore.QRect(20, 240, 321, 71))
        self.pushButton_26.setStyleSheet("background-color: rgb(240, 240, 240)")

        icon2 = QtGui.QIcon()
        icon2.addPixmap(QtGui.QPixmap(":/icons/res/icons/help.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off推荐一个在线取色器

推荐一个在线取色器网址:https://link.fobshanghai.com/rgbcolor.htm 查看详情

使用谷歌浏览器取色器取色

首先需要调到开发者模式,然后再点击图下的标识。 接着变成图标,点击就可以出现取色器。 查看详情

vue之获取并修改元素样式(比如案例取色器的实现)(代码片段)

Vue之获取并修改元素样式(经典案例取色器)一、利用原生js二、利用Vue的`v-bind`指令和`ref`属性一、利用原生js利用相关domapi取到元素(如果你的项目中引入了jQuery,也可以使用jq的api),这里... 查看详情

win10下,takecolor取色器错位指针偏移问题解决方法

当win10的屏幕缩放比例不是100%时,屏幕取色器ColorPix指针会发生偏移解决:1.右击—>属性—>兼容性2.勾选"高DPI缩放替代" 查看详情

vs2008如何调出取色器窗口?

...窗口了,怎么办呢?我是自学的。求教!很简单在对话框工具栏拖一个colorDialog1控件然后在颜色按钮下写事件if(colorDialog1.ShowDialog()==DialogResult.OK)                  &n... 查看详情

最好用的取色器,颜色转换器

...PS里去转换颜色。)  所以今天花了点时间做了一款小工具。虽然很小但却很好用,大小仅有39kb。但是代码却很强大,甚至会被杀软误报(由于使用了键盘钩子,完全无毒请放心使用)。(一)颜色拾取  引用系统API///<su... 查看详情

python制作拾色器!鼠标点击即可获取当前位置的颜色!(代码片段)

...配色问题,如果是在PPT中,只需使用颜色填充的取色器功能,就可以获取指定点的颜色,为自己作品增香添色。上篇文章说 查看详情

pythongui编程(代码片段)

文章目录PythonGUI编程0.创建窗口1.Label和Button的使用2.Entry和Text的使用3.Grid网格布局4.Frame框架5.messagebox消息框6.下拉框7.Menu菜单项目学习1.点名器a.导航栏b.主体c.逻辑PythonGUI编程0.创建窗口importtkinterastk#创建一个窗口root=tk.Tk()root.... 查看详情

swiftswift-拾色器(代码片段)

查看详情

php拾色器代码-oceanwp(代码片段)

查看详情

php拾色器代码-generatepress(代码片段)

查看详情

php拾色器代码-astra(代码片段)

查看详情

基于lua语言的触动精灵脚本开发(代码片段)

工具下载官网地址连接模拟器studio连接首先要先下载ADB模拟器连接IDE,注意,这里一定要用官网提供的ADB,安卓开发的adb不行!!!下载好之后,打开studio,输入Access Key按照下面步骤执行常用模拟器端口号查看官网连接模拟... 查看详情

python[kivy]hsva拾色器(代码片段)

查看详情

pythongui快速入门(代码片段)

GUI就是图形用户界面的意思,在Python中使用PyQt可以快速搭建自己的应用,使得自己的程序看上去更加高大上,学会GUI编程可以使得自己的软件有可视化的结果,更方便地参加“互联网+”或其他创新创业大赛。... 查看详情

pythongui:tkinter(代码片段)

一:简介tkinter是Python自带其中一个的GUI库,无需安装,直接导入。tkinter并不是GUI开发中最好的选择,它没有特别强大的GUI空间,如果开发一些非常简答的可以使用tkinter,如果开发复杂的wxPython、PyQt、PyGTK... 查看详情

pythongui:tkinter(代码片段)

一:简介tkinter是Python自带其中一个的GUI库,无需安装,直接导入。tkinter并不是GUI开发中最好的选择,它没有特别强大的GUI空间,如果开发一些非常简答的可以使用tkinter,如果开发复杂的wxPython、PyQt、PyGTK... 查看详情

使用qt创建pythongui程序(代码片段)

1.挑选GUI设计程序:wxPythonVs.pyQt4   参考链接:http://www.douban.com/group/topic/14590751/(1):wxWidgetswxPython:开发商业软件完全没有问题,使用LGPL协议;前提是你不能对这个库的本身有什么改动&#x 查看详情