天天看點

實戰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