A continuación muestro como implementar en Qt y Python un selector de color (color picker) que hereda de un QFrame.
Al hacer clic en el botón izquierdo aparece un cuadro de diálogo estandar (QColorDialog) para seleccionar un color y se actualiza el color del widget al color seleccionado. También incluye la opción de hacer clic en el botón derecho que deja un color por defecto.
Código
from PyQt4.QtGui import * from PyQt4.QtCore import * class QColorBox(QFrame): colorChanged = pyqtSignal() def __init__(self, parent=None, defaultColor=Qt.white): super(QColorBox,self).__init__(parent) self.setStyleSheet("border-color: rgba(0,0,0,0);") self.__color = None self.__defaultColor = QColor(defaultColor) self.setColor(self.__defaultColor) self.setFixedHeight(20) self.setFrameStyle(1) def setColor(self, color): if color != self.__color: self.__color = QColor(color) self.setStyleSheet("background-color: %s;" % self.__color.name()) self.colorChanged.emit() def color(self): return self.__color def mousePressEvent(self, e): if e.buttons() == Qt.LeftButton: color = QColorDialog.getColor(self.__color) if color.isValid(): self.setColor(color) self.colorChanged.emit() elif e.button() == Qt.RightButton: self.setColor(self.__defaultColor) # # test # if __name__ == "__main__": app = QApplication([]) c = QColorBox(defaultColor=Qt.red) c.show() app.exec_()