프로그래밍/Python

[PyQt5] 사용자 위젯에서 배경 그리기

채윤아빠 2023. 11. 27. 22:48
728x90
반응형

개요

위젯을 상속받은 사용자 위젯의 배경을 커스터마이징하여 그리는 방법을 알아보도록 하겠습니다.


배경 그리기

Qt에서 배경 등은 QPainter 객체를 통하여 그릴 수 있습니다.

이를 위해서는 paintEvent() 이벤트 처리 함수를 오버라이드 합니다.

다음 예제는 paintEvent() 함수를 override하고 간단하게 배경을 붉은색으로 칠하는 예제입니다.

import sys
from PyQt5.QtWidgets import QWidget, QApplication
from PyQt5.QtGui import QPainter, QColor, QPen

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

    def initUI(self):
        self.setGeometry(300, 300, 400, 400)
        self.setWindowTitle('QtWidget 배경 그리기')
        self.show()

    def paintEvent(self, event):
        qp = QPainter()
        qp.begin(self)
        self.drawBackground(qp)
        qp.end()

    def drawBackground(self, qp):
        qp.setPen(QColor(255, 255, 255))  # 흰색 펜 설정
        qp.setBrush(QColor(255, 20, 20))  # 붉은색 브러시 설정
        qp.drawRect(self.rect())  # 위젯 전체에 사각형 그리기

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

위 코드를 실행하면 다음과 같은 창이 표시됩니다.


참고자료