def __init__(self, parent): QPushButton.__init__(self, parent) self._cancelled = False self._originalColor = None self._color = QColor('black') self._colorPickerWidget = ColorPickerWidget(self) self._colorPickerWidget.setWindowFlags(Qt.Popup) self._colorPickerWidget.hide() self._colorPickerWidget.installEventFilter(self) self._colorPickerWidget.resize(80, 80) self.refresh() self._colorPickerWidget.colorChanged.connect(self.refresh) self.clicked.connect(self.togglePopup)
def color(self): return QColor.fromHsv(self.hue(), self.saturation(), self.lightness(), self.alpha())
def color( self ): return QColor.fromHsv( self.hue(), self.saturation(), self.lightness(), self.alpha() )
def paintEvent(self, event): painter = QPainter() painter.begin(self) painter.setPen(Qt.black) # create the hue rect hrect = self.hueRect() # create the hue gradient grad = QLinearGradient() grad.setStart(0, hrect.top()) grad.setFinalStop(0, hrect.bottom()) for i in range(10): perc = i / 10.0 grad.setColorAt(perc, QColor.fromHsv(perc * 360, 255, 255)) grad.setColorAt(1.0, QColor.fromHsv(359, 255, 255)) painter.setBrush(grad) painter.drawRect(hrect) # create the hue line y = (hrect.y() + 2) + self.huePercent() * (hrect.height() - 3) pen = painter.pen() pen.setColor(Qt.white) pen.setWidth(2) painter.setPen(pen) painter.drawLine(hrect.left() + 2, y, hrect.right(), y) painter.setPen(Qt.black) # create the alpha rect if (self.showAlpha()): arect = self.alphaRect() # create the alpha gradient grad = QLinearGradient() grad.setStart(arect.left(), 0) grad.setFinalStop(arect.right(), 0) grad.setColorAt(0.0, QColor(Qt.black)) grad.setColorAt(1.0, QColor(Qt.white)) painter.setBrush(grad) painter.drawRect(arect) # create the alpha line x = (arect.x() + 2) + (1 - self.alphaPercent()) * (arect.width() - 3) pen = painter.pen() pen.setColor(Qt.yellow) pen.setWidth(2) painter.setPen(pen) painter.drawLine(x, arect.top() + 2, x, arect.bottom()) painter.setPen(Qt.black) crect = self.colorRect() # create the color scale gradient grad = QLinearGradient() grad.setStart(crect.left(), 0) grad.setFinalStop(crect.right(), 0) grad.setColorAt(0.0, QColor(255, 255, 255, self.alpha())) grad.setColorAt(1.0, QColor.fromHsv(self.hue(), 255, 255, self.alpha())) painter.setBrush(grad) painter.drawRect(crect) # create the grayscale gradient grad = QLinearGradient() grad.setStart(0, crect.top()) grad.setFinalStop(0, crect.bottom()) grad.setColorAt(0.0, QColor(0, 0, 0, 0)) grad.setColorAt(1.0, QColor(0, 0, 0, self.alpha())) painter.setBrush(grad) painter.drawRect(crect) # create the color location x = crect.x() + (self.saturation() / 255.0) * crect.width() y = crect.y() + (1 - (self.lightness() / 255.0)) * crect.height() painter.setPen(Qt.white) painter.setBrush( QColor.fromHsv(self.hue(), self.saturation(), self.lightness(), 50)) painter.setClipRect(crect) painter.setRenderHint(QPainter.Antialiasing) painter.drawEllipse(QPoint(x, y), 5, 5) painter.end()
def paintEvent( self, event ): painter = QPainter() painter.begin( self ) painter.setPen( Qt.black ) # create the hue rect hrect = self.hueRect() # create the hue gradient grad = QLinearGradient() grad.setStart( 0, hrect.top() ) grad.setFinalStop( 0, hrect.bottom() ) for i in range( 10 ): perc = i / 10.0 grad.setColorAt( perc, QColor.fromHsv( perc * 360, 255, 255 ) ) grad.setColorAt( 1.0, QColor.fromHsv( 359, 255, 255 ) ) painter.setBrush( grad ) painter.drawRect( hrect ) # create the hue line y = (hrect.y() + 2) + self.huePercent() * (hrect.height() - 3) pen = painter.pen() pen.setColor( Qt.white ) pen.setWidth( 2 ) painter.setPen( pen ) painter.drawLine( hrect.left() + 2, y, hrect.right(), y ) painter.setPen( Qt.black ) # create the alpha rect if ( self.showAlpha() ): arect = self.alphaRect() # create the alpha gradient grad = QLinearGradient() grad.setStart( arect.left(), 0 ) grad.setFinalStop( arect.right(), 0 ) grad.setColorAt( 0.0, QColor( Qt.black ) ) grad.setColorAt( 1.0, QColor( Qt.white ) ) painter.setBrush( grad ) painter.drawRect( arect ) # create the alpha line x = (arect.x() + 2) + (1 - self.alphaPercent()) * (arect.width() - 3) pen = painter.pen() pen.setColor( Qt.yellow ) pen.setWidth( 2 ) painter.setPen( pen ) painter.drawLine( x, arect.top() + 2, x, arect.bottom() ) painter.setPen( Qt.black ) crect = self.colorRect() # create the color scale gradient grad = QLinearGradient() grad.setStart( crect.left(), 0 ) grad.setFinalStop( crect.right(), 0 ) grad.setColorAt( 0.0, QColor( 255, 255, 255, self.alpha() ) ) grad.setColorAt( 1.0, QColor.fromHsv( self.hue(), 255, 255, self.alpha() ) ) painter.setBrush( grad ) painter.drawRect( crect ) # create the grayscale gradient grad = QLinearGradient() grad.setStart( 0, crect.top() ) grad.setFinalStop( 0, crect.bottom() ) grad.setColorAt( 0.0, QColor( 0, 0, 0, 0 ) ) grad.setColorAt( 1.0, QColor( 0, 0, 0, self.alpha() ) ) painter.setBrush( grad ) painter.drawRect( crect ) # create the color location x = crect.x() + (self.saturation() / 255.0) * crect.width() y = crect.y() + (1 - (self.lightness() / 255.0)) * crect.height() painter.setPen( Qt.white ) painter.setBrush( QColor.fromHsv( self.hue(), self.saturation(), self.lightness(), 50) ) painter.setClipRect( crect ) painter.setRenderHint( QPainter.Antialiasing ) painter.drawEllipse( QPoint( x, y ), 5, 5 ) painter.end()