PyQt5 – QColorDialog

  • Post category:Python

“PyQt5 – QColorDialog”是PyQt5库中提供的一种颜色选择对话框,可以用于在GUI应用程序中选择颜色。它包含了RGB、HSL和HSV颜色空间,并提供了饱和度、亮度、透明度的调节,能够选择出各种颜色。

使用“PyQt5 – QColorDialog”需要导入QColorDialog类,示例代码如下:

from PyQt5.QtWidgets import QApplication, QWidget, QColorDialog

class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setGeometry(300, 300, 350, 300)
        self.setWindowTitle('Color Dialog')
        self.show()

        color = QColorDialog.getColor()
        if color.isValid():
            # 对颜色的处理

上述代码中,首先导入了QApplication、QWidget、QColorDialog类。在Example类的initUI()函数中添加颜色选择对话框。在对话框中选择颜色后,会返回一个QColor对象,可以对其进行进一步的处理。

此外,QColorDialog也提供了一些参数可以对对话框进行调节。示例代码如下:

from PyQt5.QtWidgets import QApplication, QWidget, QColorDialog
from PyQt5.QtGui import QColor

class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setGeometry(300, 300, 350, 300)
        self.setWindowTitle('Color Dialog')
        self.show()

        options = QColorDialog.ColorDialogOptions()
        color = QColorDialog.getColor(QColor(255, 255, 0), self, "Select color", options=options)
        if color.isValid():
            # 对颜色的处理

上述代码中,通过使用QColorDialog.ColorDialogOptions()类来设置一些对话框的可选项,并设置了初始的颜色值。在对话框中选择颜色后,根据isValid()函数来验证所选颜色是否有效。

以下提供两个示例说明:

  1. 在窗口中添加按钮,点击按钮后弹出颜色选择对话框,并将所选颜色的RGB值在控制台中输出。
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QColorDialog

class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setGeometry(300, 300, 350, 300)
        self.setWindowTitle('Color Dialog')

        btn = QPushButton('Select Color', self)
        btn.move(20, 20)
        btn.clicked.connect(self.showDialog)

        self.show()

    def showDialog(self):
        color = QColorDialog.getColor()
        if color.isValid():
            print(color.red(), color.green(), color.blue())

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())
  1. 在窗口中添加矩形,点击矩形后弹出颜色选择对话框,将所选颜色应用到矩形。
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QColorDialog
from PyQt5.QtGui import QPainter, QColor
from PyQt5.QtCore import Qt

class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.color = QColor(255, 255, 255) # 初始颜色为白色
        self.initUI()

    def initUI(self):
        self.setGeometry(300, 300, 350, 300)
        self.setWindowTitle('Color Dialog')

        btn = QPushButton('Select Color', self)
        btn.move(20, 20)
        btn.clicked.connect(self.showDialog)

        self.show()

    def showDialog(self):
        color = QColorDialog.getColor()
        if color.isValid():
            self.color = color
            self.update()

    def paintEvent(self, event):
        qp = QPainter()
        qp.begin(self)
        self.drawRectangles(qp)
        qp.end()

    def drawRectangles(self, qp):
        qp.setPen(Qt.NoPen)
        qp.setBrush(QColor(self.color))
        qp.drawRect(50, 50, 250, 200)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

上述代码中,首先定义一个color成员变量,初始颜色为白色。在showDialog()函数中,如果选择的颜色有效,将其赋值给color成员变量,并通过update()函数强制窗口重新绘制。在paintEvent()函数中,通过绘图函数绘制一个矩形,并设置填充颜色为color成员变量的值。当我们在选择颜色对话框中选择一个颜色时,矩形的颜色会随之改变。