pyqt6 制作一个颜色调节器 01

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 Tair(兼容Redis),内存型 2GB
简介: 本文介绍了一个使用 PyQt 制作的颜色调节器,通过滑动滚动条或旋钮来调整 RGB 三色,实现颜色的微调。具体步骤包括:1. 设计 UI 页面;2. 分析颜色调整逻辑;3. 将数据反馈到 UI 页面。最终实现了颜色随滑块变化而实时更新的效果。

 本文给大家带来一个利用pyqt制作的颜色调节器,通过拨动滚动条或者旋钮就可以调整rgb三色进行颜色的微调效果如下:

image.gif 编辑

本文实现的是不同的UI设计,实现的相同的功能,我们先分析以下思路:

  • 首先进行UI页面设计
  • 分析颜色如何进行调整的逻辑
  • 将改动的数据反馈到UI页面

先看左侧的滚动条的功能:

1 UI页面设计

首先,创建QLabel来显示颜色变换的舞台,并指定默认为红色背景,以及创建lb2来显示数据的变化。

        self.lb = QLabel()
        # 设置标签的背景色
        self.lb.setAutoFillBackground(True)
        palette = self.lb.palette()
        palette.setColor(self.lb.backgroundRole(), QColor(255, 0, 0))  # 红色背景
        self.lb.setPalette(palette)
        self.lb2=QLabel()
        self.lb2.setText("颜色值:(255, 0, 0)")

image.gif

image.gif 编辑

接下来,创建滑块,这里的滑块需要三个,分别代表红绿蓝的数据,并通过改变滑块来实现红绿蓝三色的数字变化。

                self.s1 = QScrollBar()
        self.s1.setMaximum(255)
        self.s1.sliderMoved.connect(self.sliderval)
        self.s2=QScrollBar()
        self.s2.setMaximum(255)
        self.s2.sliderMoved.connect(self.sliderval)
        self.s3 = QScrollBar()
        self.s3.setMaximum(255)
        self.s3.sliderMoved.connect(self.sliderval)

image.gif

2 数据改变函数

咱们通过配置槽函数sliderval来修改颜色值,并以palette调色板的方式返回到self.lb上,就可以实现了颜色随数字的变化而变化了。

    def sliderval(self):
        print(self.s1.value(),self.s2.value(),self.s3.value())
        palette = self.lb.palette()
        palette.setColor(self.lb.backgroundRole(), QColor(self.s1.value(), self.s2.value(), self.s3.value()))  # 红色背景
        self.lb.setPalette(palette)
        self.lb2.setText("颜色值:(%s, %s, %s)" % (self.s1.value(),self.s2.value(),self.s3.value()))

image.gif

image.gif 编辑

3 完整代码

为了方便大家的实现和学习,完整代码贴上。(爱看不看,不看拉到!)

# -*- coding:utf-8 -*-
"""
------------------------------------------------
File Name: 滚动条.py
Description:
Author: lzq
date:2024-07-27 19:16
------------------------------------------------
"""
import sys
from PyQt6.QtGui import QColor
from PyQt6.QtWidgets import QDialog, QPushButton, QVBoxLayout, QApplication, QWidget, QHBoxLayout, QScrollBar, QLabel
class MyWidget(QWidget):
    def __init__(self, parent=None):
        super(MyWidget, self).__init__(parent)
        self.setWindowTitle("滚动条QScrollBar测试")
        self.resize(500,150)
        self.lb = QLabel()
        # 设置标签的背景色
        self.lb.setAutoFillBackground(True)
        palette = self.lb.palette()
        palette.setColor(self.lb.backgroundRole(), QColor(255, 0, 0))  # 红色背景
        self.lb.setPalette(palette)
        self.lb2=QLabel()
        self.lb2.setText("颜色值:(255, 0, 0)")
        hbox=QHBoxLayout()
        self.s1 = QScrollBar()
        self.s1.setMaximum(255)
        self.s1.sliderMoved.connect(self.sliderval)
        self.s2=QScrollBar()
        self.s2.setMaximum(255)
        self.s2.sliderMoved.connect(self.sliderval)
        self.s3 = QScrollBar()
        self.s3.setMaximum(255)
        self.s3.sliderMoved.connect(self.sliderval)
        hbox.addWidget(self.lb)
        hbox.addWidget(self.lb2)
        hbox.addWidget(self.s1)
        hbox.addWidget(self.s2)
        hbox.addWidget(self.s3)
        self.setGeometry(500,200,500,300)
        self.setLayout(hbox)
    def sliderval(self):
        print(self.s1.value(),self.s2.value(),self.s3.value())
        palette = self.lb.palette()
        palette.setColor(self.lb.backgroundRole(), QColor(self.s1.value(), self.s2.value(), self.s3.value()))  # 红色背景
        self.lb.setPalette(palette)
        self.lb2.setText("颜色值:(%s, %s, %s)" % (self.s1.value(),self.s2.value(),self.s3.value()))
if __name__=='__main__':
    app = QApplication(sys.argv)
    w = MyWidget()
    w.show()
    sys.exit(app.exec())

image.gif


相关文章
|
10月前
|
SQL 关系型数据库 MySQL
18 PDO你知道是什么吗?
路老师在知乎分享了PHP语言的知识,重点介绍了PDO(PHP Data Object)数据库抽象层。PDO旨在解决PHP早期版本的维护难题,提高代码的可移植性和兼容性。文章详细讲解了PDO的基本概念、特点、连接数据库的方法以及执行SQL语句的几种方式,包括`exec()`、`query()`、`prepare()`和`execute()`方法。适合PHP初学者深入了解和实践。
765 3
|
10月前
pyqt6 制作一个颜色调节器 02
本文介绍了如何使用PyQt6实现一个颜色调节器。首先创建了一个显示RGB颜色值变化的标签,然后通过三个旋钮(QDial)分别控制红、绿、蓝三种颜色的值,并在旋钮下方显示当前值。通过嵌套布局实现了旋钮和标签的排列,最终实现了颜色值的变化和显示。完整代码也一并提供。
202 0
|
10月前
|
存储 PHP 计算机视觉
28 验证码绘制
路老师分享了如何使用PHP生成验证码并实现登录验证功能。文章详细介绍了验证码的生成过程,包括创建 `verify.php` 文件、定义验证码参数、选取随机字符、设置样式、添加干扰点以及生成最终的验证码图像。此外,还展示了如何在登录页面 `login.php` 中使用验证码,并编写了 `checkLogin.php` 文件来校验用户输入的验证码和登录信息。最后,通过几个操作案例演示了验证码的有效性和登录流程。
97 2
|
10月前
|
存储 安全 PHP
24 Session
路老师在知乎上分享了PHP语言的知识,帮助大家入门并深入了解PHP。本文重点讲解了Session管理,包括Session的基本概念、工作原理、功能、创建会话、存储和读取会话数据,以及删除会话的方法。通过这些内容,读者可以更好地理解和应用Session技术。
105 1
|
11月前
|
机器学习/深度学习 编解码 监控
目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
这篇文章详细介绍了如何使用YOLOv8进行目标检测任务,包括环境搭建、数据准备、模型训练、验证测试以及模型转换等完整流程。
17336 58
目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
|
10月前
|
JavaScript PHP UED
16 PHP实现图书删除功能
路老师在知乎上分享了PHP语言的知识,帮助大家入门和深入了解PHP。本文介绍了如何实现图书删除功能,通过点击删除按钮触发`deleteBook.php`文件,完成删除操作并返回列表页。同时,还新增了一个“新增”按钮,优化了用户体验。
95 2
16 PHP实现图书删除功能
|
10月前
|
安全 Linux Shell
ssh 远程控制服务
SSH(Secure Shell)是一种用于远程登录的安全协议,相比FTP和Telnet,它提供了更高的安全性,避免了明文传输带来的风险。要使用SSH远程管理Linux系统,需要配置sshd服务。本文介绍了如何克隆Linux服务器、修改网络配置,并通过SSH连接两台服务器,最后在目标服务器上创建一个日志文件。
202 5
|
10月前
pyqt6 绘图案例
本文介绍了三个使用 PyQt6 绘制图形的案例:绘制奥运图片、绘制五角星和绘制时钟。每个案例都提供了详细的代码示例和效果图,帮助读者更好地理解和实现这些图形绘制功能。
228 1
|
10月前
|
SQL PHP 数据库
20 PHP如何捕获sql错误
路老师带你深入学习PHP,掌握技术干货。本文介绍了PDO中捕获SQL错误的三种模式:默认模式、警告模式和异常模式,以及如何使用errorCode()和errorInfo()方法进行错误处理。
212 2
|
10月前
|
PHP
29 JpGraph图像绘制库
路老师在知乎上分享了PHP语言的知识,帮助大家入门并深入了解PHP。本文介绍了JpGraph库的下载、使用及中文乱码设置,通过实例展示了如何使用JpGraph绘制折线图。
110 2