PyQt5是一个Python GUI编程工具包,其中QColorDialog类提供了一个用于调色板的对话框。它允许用户选择颜色,支持预定义的颜色和自定义颜色。以下是QColorDialog的完整使用攻略及示例说明。
QColorDialog的基本用法
引入模块
from PyQt5.QtWidgets import QApplication, QColorDialog
from PyQt5.QtGui import QColor
import sys
创建应用程序对象
app = QApplication(sys.argv)
创建QColorDialog的实例
colorDialog = QColorDialog()
调用QColorDialog的exec()方法显示对话框
colorDialog.exec_()
获取用户选择的颜色
color = colorDialog.selectedColor()
完整示例1:使用预定义颜色
下面是一个完整的QColorDialog示例,演示如何使用预定义颜色。示例中创建了一个PushButton按钮,点击按钮后会弹出颜色对话框。用户选择颜色后,按钮的背景色将会被设置为所选颜色。代码如下所示:
from PyQt5.QtWidgets import QApplication, QPushButton, QVBoxLayout, QHBoxLayout, QColorDialog, QWidget
from PyQt5.QtGui import QColor
import sys
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('QColorDialog - Predefined Colors')
self.setGeometry(100, 100, 250, 150)
# 创建PushButton
btn = QPushButton('Select Color', self)
btn.clicked.connect(self.showDialog)
# 创建一个水平布局
hBox = QHBoxLayout()
hBox.addWidget(btn)
# 创建一个垂直布局
vBox = QVBoxLayout(self)
vBox.addLayout(hBox)
def showDialog(self):
# 创建QColorDialog实例
colorDialog = QColorDialog()
# 设置对话框的预定义颜色
colorDialog.setOptions(QColorDialog.ShowAlphaChannel)
colorDialog.setCurrentColor(QColor(255, 0, 0))
# 显示对话框
if colorDialog.exec_():
# 获取用户选择的颜色
color = colorDialog.selectedColor()
# 设置背景颜色
self.setStyleSheet("background-color: %s;" % color.name())
if __name__ == '__main__':
app = QApplication(sys.argv)
mainWindow = MainWindow()
mainWindow.show()
sys.exit(app.exec_())
完整示例2:使用自定义颜色
下面是一个完整的QColorDialog示例,演示如何使用自定义颜色。示例中创建了一个PushButton按钮,点击按钮后会弹出颜色对话框。用户选择颜色后,将会在窗体中创建一个和选择颜色相同的矩形。代码如下所示:
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout, QHBoxLayout, QColorDialog
from PyQt5.QtGui import QPainter, QColor, QBrush, QPen
import sys
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.color = QColor(0, 0, 0)
self.initUI()
def initUI(self):
self.setWindowTitle('QColorDialog - Custom Colors')
self.setGeometry(100, 100, 250, 150)
# 创建PushButton
btn = QPushButton('Select Color', self)
btn.clicked.connect(self.showDialog)
# 创建垂直区域
vBox = QVBoxLayout(self)
vBox.addWidget(btn)
# 设置背景颜色和绘制事件
self.setAutoFillBackground(True)
self.paintEvent = self.drawRectangle
def showDialog(self):
# 创建QColorDialog实例
colorDialog = QColorDialog()
# 设置对话框的选项和自定义颜色
colorDialog.setOptions(QColorDialog.ColorDialogOption.NoButtons)
colorDialog.setCustomColor(0, QColor(0, 0, 0))
colorDialog.setCustomColor(1, QColor(255, 0, 0))
colorDialog.setCustomColor(2, QColor(0, 255, 0))
colorDialog.setCustomColor(3, QColor(0, 0, 255))
# 显示对话框
color = colorDialog.getColor(initial=self.color)
if color.isValid():
self.color = color
def drawRectangle(self, event):
painter = QPainter(self)
painter.setPen(QPen(Qt.NoPen))
brush = QBrush(self.color)
painter.setBrush(brush)
painter.drawRect(self.rect())
if __name__ == '__main__':
app = QApplication(sys.argv)
mainWindow = MainWindow()
mainWindow.show()
sys.exit(app.exec_())
以上两个示例演示了QColorDialog的不同用法。第一个示例演示了如何使用预定义颜色,而第二个示例演示了如何使用自定义颜色。生成的 PyQt5 应用窗口中添加按钮,当单击此按钮时,会打开'颜色对话框'窗口(使用预定义或自定义颜色),使用弹出窗口选择颜色。选择颜色后关闭颜色对话框,按钮的背景颜色将设置为所选颜色,或者在窗口中显示与所选颜色相同的矩形。