PyQt5 QColorDialog – 为它的QWidget孩子设置皮肤

  • Post category:Python

下面是关于Python PyQt5 QColorDialog的完整使用攻略,包含两个示例:

一、QColorDialog简介

QColorDialog是PyQt5中一个用于选择颜色的对话框组件,可以用于设置QWidget的背景颜色、字体颜色等。

二、QColorDialog常用方法

下面给出一些常用的QColorDialog方法:

getColor()

显示颜色选择对话框,并返回用户选择的颜色。其函数原型为:

getColor(initial=QColor(255, 255, 255), parent=None, title='', options=QColorDialog.ShowAlphaChannel)

参数说明:

  • initial: 初始颜色。可以是一个QColor对象或者一个RGB三元组。
  • parent: 父窗口。
  • title: 对话框标题。
  • options: 显示选项。

返回值为一个QColor对象。

setCurrentColor()

设置当前已选择的颜色。其函数原型为:

setCurrentColor(color)

参数说明:

  • color: 要设置的颜色,可以是一个QColor对象或者一个RGB三元组。

currentColor()

获取当前已选择的颜色。返回值为一个QColor对象。

三、QColorDialog使用示例

示例1 显示并获取用户选择的颜色

下面的示例展示了如何使用QColorDialog组件显示颜色选择对话框,并获取用户选择的颜色:

import sys
from PyQt5.QtGui import QColor
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QLabel, QColorDialog

class MainWindow(QWidget):
    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):
        layout = QVBoxLayout()

        self.button = QPushButton('Choose Color', self)
        self.button.clicked.connect(self.showColorDialog)
        layout.addWidget(self.button)

        self.label = QLabel('Current Color: ', self)
        layout.addWidget(self.label)

        self.setLayout(layout)
        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('Color Dialog')
        self.show()

    def showColorDialog(self):
        color = QColorDialog.getColor()

        if color.isValid():
            self.label.setText('Current Color: ' + color.name())
            self.label.setStyleSheet('color: %s' % color.name())

if __name__ == '__main__':
    app = QApplication(sys.argv)
    mainWindow = MainWindow()
    sys.exit(app.exec_())

在主窗口中添加一个按钮,点击按钮弹出颜色选择对话框。在对话框中选择颜色后,更新标签的文本和样式。

示例2 设置QWidget的背景颜色

下面的示例展示了如何使用QColorDialog组件设置QWidget的背景颜色:

import sys
from PyQt5.QtGui import QColor
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QLabel, QColorDialog

class MainWindow(QWidget):
    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):
        layout = QVBoxLayout()

        self.button = QPushButton('Choose Color', self)
        self.button.clicked.connect(self.showColorDialog)
        layout.addWidget(self.button)

        self.setLayout(layout)
        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('Color Dialog')
        self.show()

    def showColorDialog(self):
        color = QColorDialog.getColor()

        if color.isValid():
            self.setStyleSheet('background-color: %s' % color.name())

if __name__ == '__main__':
    app = QApplication(sys.argv)
    mainWindow = MainWindow()
    sys.exit(app.exec_())

在主窗口中添加一个按钮,点击按钮弹出颜色选择对话框。在对话框中选择颜色后,设置QWidget的背景颜色。