🍊

001 QFont (텍스트 넣기)

1. 코드

import sys from PyQt5.QtWidgets import QApplication, QWidget from PyQt5.QtGui import QPainter, QColor, QFont from PyQt5.QtCore import Qt class 텍스트넣기(QWidget): def __init__(self): super().__init__() self.UI초기화() def UI초기화(self): self.text = 'Hello Weniv World!!' self.setGeometry(150, 300, 250, 500) self.setWindowTitle('QPainter!') self.show() def paintEvent(self, event): paint = QPainter() paint.begin(self) self.drawText(event, paint) paint.end() def drawText(self, event, paint): paint.setPen(QColor(10, 10, 10)) paint.setFont(QFont('Decorative', 10)) paint.drawText(130, 100, 'hello world!!') paint.drawText(event.rect(), Qt.AlignCenter, self.text) 프로그램무한반복 = QApplication(sys.argv) 실행인스턴스 = 텍스트넣기() 프로그램무한반복.exec_()

2. 상세 내용

순서대로 따라가시다 보면 painEvent를 호출하지 않았다는 사실을 알게 되실 겁니다. 그런데 어떻게 painEvent는 호출되고 있었던 것일까요? 그 이유는 painEvent는 이미 정의되어 있는 메서드이고, 위젯은 자신을 다시 그릴 때 이 함수를 호출하기 때문입니다.
notion imagenotion image
widget에 Virtual functions에 가보면 이미 paintEvent가 정의되어 있는 것을 확인할 수 있습니다. 링크는 아래 있습니다.
drawText는 우리가 정의한 함수입니다. paintEvent에서 호출하고 있는 것을 볼 수 있습니다.
 
  • QPainter : 그림판 같은 역할을 하는 모듈입니다.
  • QColor : Color와 관련된 모듈입니다. 0부터 255 값으로 된 RGB 값으로 줄 수도 있고, color name으로도 줄 수 있으며, hex값으로도 줄 수 있습니다. color에 대한 기본적인 개념을 잡고 싶으신 분은 아래 문서를 참고하세요.
 
  • QFont : 폰트와 같은 설정을 할 수 있습니다. 굵기와 폰트 스타일 등을 지정할 수 있습니다. 상세 설정은 공식문서를 참고바랍니다.
 

3. 실행 화면

 
notion imagenotion image