天天看点

实战PyQt5: 059-颜色对话框QColorDialogQColorDialog简介测试QColorDialog本文知识点

QColorDialog简介

QColorDialog控件是一个常用的颜色选择对话框,继承自QDialog,是Qt内建的标准对话框之一。当程序中需要设置某一控件或控件外字体颜色时,我们使用该控件,对颜色进行选择、设置。

颜色对话框界面有以下几种功能:

  • 从基础颜色中选择需要的颜色;
  • 从色谱图中选择所需颜色;
  • 将喜欢的颜色添加到常用颜色中;
  • 使用取色器在屏幕上取色;
  • 微调三原色数值。

QColorDialog常用方法有:

  • getColor(): 打开一个颜色选择对话框,如果点击‘确定’或等效按钮,返回选取的颜色,否则返回Q ColorDialog缺省颜色;
  • currentColor(): 返回当前颜色值;
  • selectedColor(): 返回已选颜色值;
  • setCurrentColor(): 设置当前颜色值;
  • setCustomColor(): 设置用户自定义颜色;
  • customColor(): 返回自定义颜色。

QColorDialog常用信号:

  • currentColorChanged(): 当前颜色改变时发射该信号;
  • colorSelected(): 颜色最终被选择时发射该信号;

QColorDialog类继承关系:

实战PyQt5: 059-颜色对话框QColorDialogQColorDialog简介测试QColorDialog本文知识点

测试QColorDialog

创建文件qcolordialog.py,通过颜色选择对话框选择相应颜色,将颜色的效果显示在一个QLabel标签页的文本上,完整代码如下:

import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPalette
from PyQt5.QtWidgets import (QApplication, QWidget, QLabel,
                             QPushButton, QColorDialog, QVBoxLayout)
 
class DemoColorDialog(QWidget):
    def __init__(self, parent=None):
        super(DemoColorDialog, self).__init__(parent)       
        
        # 设置窗口标题
        self.setWindowTitle('实战PyQt5: QColorDialog Demo!')      
        # 设置窗口大小
        self.resize(360, 240)
        
        self.initUi()
        
    def initUi(self):
        
        vLayout = QVBoxLayout(self)
        vLayout.addSpacing(10)
        
        btnTest = QPushButton('调整颜色', self)
        btnTest.clicked.connect(self.onSetFont)
        
        self.label_text = QLabel('实战PyQt5: \n测试QColorDialog')
        self.label_text.setAlignment(Qt.AlignCenter)
        self.label_text.setFont(QtGui.QFont(self.font().family(), 16))
        
        vLayout.addWidget(btnTest)
        vLayout.addWidget(self.label_text)
        
        self.setLayout(vLayout)
                
    def onSetFont(self):
        col = QColorDialog.getColor()
        pal = self.label_text.palette()
        pal.setColor(QPalette.WindowText, col)
        self.label_text.setPalette(pal)
        
if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = DemoColorDialog()
    window.show()
    sys.exit(app.exec())
           

运行结果如下图:

实战PyQt5: 059-颜色对话框QColorDialogQColorDialog简介测试QColorDialog本文知识点

测试QColorDialog

本文知识点

  • 使用QColorDialog选择颜色;
  • QColorDialog对话框功能区域;
  • 使用QPalette方式改变QLabel上文本的颜色。

前一篇:  实战PyQt5:058-字体选择对话框QFontDialog