49-1 예제: ex48
import sys from PyQt5.QtWidgets import (QApplication, QWidget) from PyQt5.QtGui import QPainter, QPen, QColor, QBrush from PyQt5.QtCore import Qt class MyApp(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setWindowTitle('drawRect') self.setGeometry(300, 300, 400, 300) self.show() def paintEvent(self, e): qp = QPainter() qp.begin(self) self.draw_rect(qp) qp.end() def draw_rect(self, qp): qp.setBrush(QColor(180, 100, 160)) qp.setPen(QPen(QColor(60, 60, 60), 3)) qp.drawRect(20, 20, 100, 100) qp.setBrush(QColor(40, 150, 20)) qp.setPen(QPen(Qt.blue, 2)) qp.drawRect(180, 120, 50, 120) qp.setBrush(Qt.yellow) qp.setPen(QPen(Qt.red, 5)) qp.drawRect(280, 30, 80, 40) if __name__ == '__main__': app = QApplication(sys.argv) win = MyApp() sys.exit(app.exec_()) |
49-2 설명
drawRect() 에 x, y, width, height 순서로 정수를 입력합니다.
setBrush() 와 setPen()을 이용해서 사각형 면의 색상과 선의 색상, 두께를 다양하게 설정합니다.
49-3 결과
49-4 예제2
import sys from PyQt5.QtWidgets import (QApplication, QWidget) from PyQt5.QtGui import QPainter, QPen, QColor, QBrush from PyQt5.QtCore import Qt class MyApp(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setWindowTitle('drawRect') self.setGeometry(300, 300, 400, 300) self.show() def paintEvent(self, e): qp = QPainter() qp.begin(self) self.draw_rect(qp) qp.end() def draw_rect(self, qp): brush = QBrush(Qt.SolidPattern) qp.setBrush(brush) qp.drawRect(20, 10, 100, 60) qp.drawText(20, 90, 'Qt.SolidPattern') brush = QBrush(Qt.Dense1Pattern) qp.setBrush(brush) qp.drawRect(150, 10, 100, 60) qp.drawText(150, 90, 'Qt.Dense1Pattern') brush = QBrush(Qt.Dense2Pattern) qp.setBrush(brush) qp.drawRect(280, 10, 100, 60) qp.drawText(280, 90, 'Qt.Dense2Pattern') brush = QBrush(Qt.HorPattern) qp.setBrush(brush) qp.drawRect(20, 110, 100, 60) qp.drawText(20, 190, 'Qt.HorPattern') brush = QBrush(Qt.VerPattern) qp.setBrush(brush) qp.drawRect(150, 110, 100, 60) qp.drawText(150, 190, 'Qt.VerPattern') brush = QBrush(Qt.CrossPattern) qp.setBrush(brush) qp.drawRect(280, 110, 100, 60) qp.drawText(280, 190, 'Qt.CrossPattern') brush = QBrush(Qt.BDiagPattern) qp.setBrush(brush) qp.drawRect(20, 210, 100, 60) qp.drawText(20, 290, 'Qt.BDiagPattern') brush = QBrush(Qt.FDiagPattern) qp.setBrush(brush) qp.drawRect(150, 210, 100, 60) qp.drawText(150, 290, 'Qt.FDiagPattern') brush = QBrush(Qt.DiagCrossPattern) qp.setBrush(brush) qp.drawRect(280, 210, 100, 60) qp.drawText(280, 290, 'Qt.DiagCrossPattern') if __name__ == '__main__': app = QApplication(sys.argv) win = MyApp() sys.exit(app.exec_()) |
49-5 설명
QBrush()에 Qt.SolidPattern, Qt.Dense1Pattern 등을 이용해서 직사각형의 채우기 패턴을 설정할 수 있습니다.
49-6 결과
'프로그래밍 > PyQt5 GUI' 카테고리의 다른 글
51. 다각형 그리기 (drawPolygon) (0) | 2021.07.29 |
---|---|
50. 둥근 직사각형 그리기 (drawRoundedRect) (0) | 2021.07.29 |
48. 직선 그리고 (drawLine) (0) | 2021.07.29 |
47. 점 그리기 (drawPoint) (0) | 2021.07.29 |
46. 사용자 정의 시그널 (0) | 2021.07.28 |