본문 바로가기

프로그래밍/PyQt5 GUI

38. QColorDialog

QColorDialog Class는 색상을 선택할 수 있는 대화창입니다. (QColorDialog 공식 문서) 참고

38-1 예제: ex37

import sys
from PyQt5.QtWidgets import (QApplication, QWidget, QColorDialog, QPushButton, QFrame)
from PyQt5.QtGui import QColor

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

    def initUI(self):
        col = QColor(0, 0, 0)

        self.btn = QPushButton('Dialog', self)
        self.btn.move(30, 30)
        self.btn.clicked.connect(self.showDialog)

        self.frm = QFrame(self)
        self.frm.setStyleSheet('QWidget { background-color: %s }' % col.name())
        self.frm.setGeometry(130, 33, 100, 100)

        self.setWindowTitle('QColor Dialog')
        self.setGeometry(300, 300, 250, 180)
        self.show()

    def showDialog(self):
        col = QColorDialog.getColor()

        if col.isValid():
            self.frm.setStyleSheet('QWidget { background-color: %s }' % col.name())

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

38-2 설명

QPushButton과 QFrame 하나씩을 만들고, QFrame 위젯의 배경색은 검정색으로 설정합니다.

QColorDialog를 사용해서, 배경색을 바꿀 수 있습니다.

col = QColor(0, 0, 0)

QColor를 사용해서 배경색인 검정색을 만들었습니다.

def showDialog(self):
    col = QColorDialog.getColor()

QColorDialog Class의 getColor() 메서드는 색상 대화창을 띄우고 사용자가 색상을 선태갛도록 합니다.

그리고 선택한 색상을 QColor Class의 형태로 반환합니다.

if col.isValid():
    self.frm.setStyleSheet('QWidget { background-color: %s }' % col.name())

색상을 선택하고 'OK' 버튼을 눌렀다면, col.isValid() 의 불 값이 True이고, 'Cancel' 버튼을 눌렀다면, 불 값이 False가 됩니다. 선택한 색상이 프레임의 배경색으로 설정됩니다.

 

38-3 결과

'프로그래밍 > PyQt5 GUI' 카테고리의 다른 글

40. QFileDialog  (0) 2021.07.28
39. QFontDialog  (0) 2021.07.28
37. QInputDialog  (0) 2021.07.27
36. QTableWidget  (0) 2021.07.27
34. QTextEdit  (0) 2021.07.27