[파이썬] PyQt `QPalette`를 사용한 색상 관리

QPalette

PyQt는 Python에서 GUI 애플리케이션을 개발하기 위한 강력한 도구입니다. QPalette는 PyQt에서 색상 관리를 담당하는 클래스로, 애플리케이션의 외관을 커스터마이징하는 데 유용합니다.

QPalette 소개

QPalette는 PyQt에서 색상, 배경, 글꼴 등의 다양한 속성을 관리합니다. QPaletteQWidget와 그 하위 클래스에 할당되며, 각각의 위젯은 자체적인 팔레트를 가질 수 있습니다. 예를 들어, QLabel 위젯에는 QPalette가 내장되어 있어 상태 변화에 따른 색상 변경을 적용할 수 있습니다.

색상 속성 변경

QPalette를 사용하여 위젯의 색상을 변경하는 것은 매우 간단합니다. 다음은 QLabel 위젯의 배경색과 텍스트 색상을 변경하는 예시입니다:

from PyQt5.QtWidgets import QApplication, QLabel
from PyQt5.QtGui import QPalette, QColor

app = QApplication([])

# QLabel 위젯 생성
label = QLabel("Hello, PyQt!")

# 기본 팔레트 가져오기
palette = label.palette()

# 배경색과 텍스트 색상 변경
palette.setColor(QPalette.Window, QColor(255, 255, 255))  # 배경색
palette.setColor(QPalette.WindowText, QColor(0, 0, 0))    # 텍스트 색상

# 변경된 팔레트 적용
label.setPalette(palette)

label.show()
app.exec()

위 코드에서 QLabel 위젯을 생성하고, 기본 팔레트를 가져옵니다. 팔레트의 setColor 메서드를 사용하여 배경색과 텍스트 색상을 변경한 후, setPalette 메서드를 사용하여 변경된 팔레트를 QLabel 위젯에 적용합니다. 마지막으로, 애플리케이션을 실행하여 변경된 색상이 적용된 위젯을 확인할 수 있습니다.

테마 관리

QPalette를 사용하면 애플리케이션의 테마를 관리하는 것도 가능합니다. PyQt는 미리 정의된 상수를 사용하여 다양한 테마를 제공합니다. 예를 들어, 다음은 애플리케이션의 테마를 다크 모드로 변경하는 코드입니다:

from PyQt5.QtWidgets import QApplication, QLabel
from PyQt5.QtGui import QPalette, QColor

app = QApplication([])

# QLabel 위젯 생성
label = QLabel("Hello, PyQt!")

# 기본 팔레트 가져오기
palette = label.palette()

# 다크 모드 테마 설정
palette.setColor(QPalette.Window, QColor(53, 53, 53))              # 배경색
palette.setColor(QPalette.WindowText, QColor(255, 255, 255))       # 텍스트 색상
palette.setColor(QPalette.Base, QColor(25, 25, 25))                 # 기본색
palette.setColor(QPalette.AlternateBase, QColor(53, 53, 53))        # 대체 배경색
palette.setColor(QPalette.ToolTipBase, QColor(255, 255, 220))       # 툴팁 배경색
palette.setColor(QPalette.ToolTipText, QColor(0, 0, 0))             # 툴팁 텍스트 색상
palette.setColor(QPalette.Text, QColor(255, 255, 255))              # 일반 텍스트 색상
palette.setColor(QPalette.Button, QColor(53, 53, 53))               # 버튼 배경색
palette.setColor(QPalette.ButtonText, QColor(255, 255, 255))        # 버튼 텍스트 색상
palette.setColor(QPalette.BrightText, QColor(255, 0, 0))             # 밝은 텍스트 색상
palette.setColor(QPalette.Link, QColor(42, 130, 218))                # 링크 색상
palette.setColor(QPalette.Highlight, QColor(42, 130, 218))           # 하이라이트 배경색
palette.setColor(QPalette.HighlightedText, QColor(255, 255, 255))    # 하이라이트된 텍스트 색상

# 변경된 팔레트 적용
label.setPalette(palette)

label.show()
app.exec()

위 코드에서는 위젯의 테마를 다크 모드로 변경하기 위해 팔레트의 색상 값을 변경하였습니다. 이렇게 변경된 팔레트를 QLabel 위젯에 적용하여 다크 모드 테마가 됩니다.

결론

PyQt의 QPalette를 사용하면 쉽게 애플리케이션의 색상을 관리할 수 있습니다. QPalette를 사용하여 위젯의 색상을 변경하거나, 테마를 적용하여 애플리케이션의 외관을 개선할 수 있습니다. PyQt의 QPalette를 활용하여 GUI 애플리케이션을 더욱 매력적이고 사용자 친화적으로 만들어 보세요.