PyQt color picker dialog which contains color picker widget.
You can either use dialog or widget.
PyQt5 >= 5.8
python -m pip install pyqt-color-picker
ColorPickerDialog(color=QColor(255, 255, 255), orientation='horizontal')
color
argument's type can beQColor
orstr
.orientation
argument decides the overall layout direction of the dialog. There are two values.'horizontal'
,'vertical'
. See layout preview below.
getColor() -> QColor
- get the color.
If you only want to use this as a part of window(not as whole dialog), use ColorPickerWidget(color=QColor(255, 255, 255), orientation='horizontal')
. See the example below.
colorChanged(color: QColor)
- signal. After color being changed, this will be emitted.getCurrentColor() -> QColor
- get the current color.setCurrentColor(QColor|str)
- set the current color.
Horizontal
Vertical
dialog = ColorPickerDialog()
reply = dialog.exec()
if reply == QDialog.Accepted:
color = dialog.getColor() # return type is QColor
//..
example.mp4
from PyQt5.QtWidgets import QMainWindow, QApplication, QHBoxLayout, QWidget, QTextEdit
from pyqt_color_picker import ColorPickerWidget
class Window(QMainWindow):
def __init__(self):
super().__init__()
self.__initUi()
def __initUi(self):
self.__te = QTextEdit()
self.__colorPicker = ColorPickerWidget(orientation='vertical')
self.__colorPicker.colorChanged.connect(self.colorChanged) # when color has changed, call the colorChanged function
lay = QHBoxLayout()
lay.addWidget(self.__te)
lay.addWidget(self.__colorPicker)
mainWidget = QWidget()
mainWidget.setLayout(lay)
self.setCentralWidget(mainWidget)
def colorChanged(self, color):
self.__te.setStyleSheet(f'QTextEdit {{ color: {color.name()} }}')
if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
ex = Window()
ex.show()
sys.exit(app.exec_())