Python 高级梯度

Python 高级梯度,python,python-3.x,pyside2,Python,Python 3.x,Pyside2,我想做一个简单的颜色选择器。起初,它由r、g、b和h、s、l滑块组成,但后来我决定使用更常见的选择器,即带有色调滑块的选择器,以及类似于此图像中的东西 这是我第一次处理颜色/渐变,尝试用QlineArgradent制作并实现渐变,但意识到渐变不是这样工作的。我不知道如何以编程的方式绘制图片中的渐变。我怎样才能画出这样的东西?我说的不是制作颜色选择器本身,而是图像中的渐变 以下是我尝试过的 import sys from PySide2.QtCore import * from PySide2.

我想做一个简单的颜色选择器。起初,它由r、g、b和h、s、l滑块组成,但后来我决定使用更常见的选择器,即带有色调滑块的选择器,以及类似于此图像中的东西

这是我第一次处理颜色/渐变,尝试用QlineArgradent制作并实现渐变,但意识到渐变不是这样工作的。我不知道如何以编程的方式绘制图片中的渐变。我怎样才能画出这样的东西?我说的不是制作颜色选择器本身,而是图像中的渐变

以下是我尝试过的

import sys
from PySide2.QtCore import *
from PySide2.QtGui import *
from PySide2.QtWidgets import *
import pathlib
import customColorsList


class widget(QWidget):
    def __init__(self):
        super(widget, self).__init__()

        self.resize(300, 300)

        self.setStyleSheet("background: qlineargradient("
                           "x1:0, y1:0,"
                           "x2:1, y2:1,"
                           "stop:0 white,"
                           "stop:0.5 green,"
                           "stop:1 black);")


if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = widget()
    w.show()
    sys.exit(app.exec_())  

使用简单的渐变无法实现这一点,但可以使用基本构图,颜色为水平QlineArgent,黑色为垂直分量

基本概念如下:

        self.gradient = QtGui.QLinearGradient(0, 0, 1, 0)
        self.gradient.setCoordinateMode(QtGui.QGradient.ObjectBoundingMode)
        self.gradient.setColorAt(0, QtCore.Qt.white)
        self.gradient.setColorAt(0, QtCore.Qt.green)

        self.overlay = QtGui.QLinearGradient(0, 0, 0, 1)
        self.overlay.setCoordinateMode(QtGui.QGradient.ObjectBoundingMode)
        self.overlay.setColorAt(0, QtCore.Qt.transparent)
        self.overlay.setColorAt(1, QtCore.Qt.black)
在下面的示例中,我实现了一个显示颜色的基本小部件和一个更改颜色的简单界面:


使用简单的渐变无法实现这一点,但可以使用基本构图,颜色为水平QlineArgent,黑色为垂直分量

基本概念如下:

        self.gradient = QtGui.QLinearGradient(0, 0, 1, 0)
        self.gradient.setCoordinateMode(QtGui.QGradient.ObjectBoundingMode)
        self.gradient.setColorAt(0, QtCore.Qt.white)
        self.gradient.setColorAt(0, QtCore.Qt.green)

        self.overlay = QtGui.QLinearGradient(0, 0, 0, 1)
        self.overlay.setCoordinateMode(QtGui.QGradient.ObjectBoundingMode)
        self.overlay.setColorAt(0, QtCore.Qt.transparent)
        self.overlay.setColorAt(1, QtCore.Qt.black)
在下面的示例中,我实现了一个显示颜色的基本小部件和一个更改颜色的简单界面: