직선 그리기 (drawLine)

이번 예제에서는 drawLine()을 이용해서 위젯에 다양한 스타일의 직선을 그려 보겠습니다.


예제

## Ex 8-2. 직선 그리기 (drawLine).

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


class MyApp(QWidget):

    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setGeometry(300, 300, 400, 300)
        self.setWindowTitle('drawLine')
        self.show()

    def paintEvent(self, e):
        qp = QPainter()
        qp.begin(self)
        self.draw_line(qp)
        qp.end()

    def draw_line(self, qp):
        qp.setPen(QPen(Qt.blue, 8))
        qp.drawLine(30, 230, 200, 50)
        qp.setPen(QPen(Qt.green, 12))
        qp.drawLine(140, 60, 320, 280)
        qp.setPen(QPen(Qt.red, 16))
        qp.drawLine(330, 250, 40, 190)


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

세 개의 직선이 그려졌습니다.

setPen()을 이용해서 선의 색깔과 두께를 설정해주고,

drawLine(x1, y1, x2, y2)의 형태로 선의 양 끝점의 위치를 정수로 입력해줍니다.

결과는 아래와 같습니다.


../_images/8_2_draw_line_01.png

그림 8-2-1. 직선 그리기1.




def draw_line(self, qp):
    qp.setPen(QPen(Qt.black, 3, Qt.SolidLine))
    qp.drawLine(20, 20, 380, 20)
    qp.drawText(30, 40, 'Qt.SolidLine')

    qp.setPen(QPen(Qt.black, 3, Qt.DashLine))
    qp.drawLine(20, 70, 380, 70)
    qp.drawText(30, 90, 'Qt.DashLine')

    qp.setPen(QPen(Qt.black, 3, Qt.DotLine))
    qp.drawLine(20, 120, 380, 120)
    qp.drawText(30, 140, 'Qt.DotLine')

    qp.setPen(QPen(Qt.black, 3, Qt.DashDotLine))
    qp.drawLine(20, 170, 380, 170)
    qp.drawText(30, 190, 'Qt.DashDotLine')

    qp.setPen(QPen(Qt.black, 3, Qt.DashDotDotLine))
    qp.drawLine(20, 220, 380, 220)
    qp.drawText(30, 240, 'Qt.DashDotDotLine')

    pen = QPen(Qt.black, 3, Qt.CustomDashLine)
    pen.setDashPattern([4, 3, 2, 5])
    qp.setPen(pen)
    qp.drawLine(20, 270, 380, 270)
    qp.drawText(30, 290, 'Qt.CustomDashLine')

Qt.SolidLine, Qt.DashLine 등을 입력하면 다양한 형태의 선 종류를 설정할 수 있습니다.

결과는 아래 그림과 같습니다.


../_images/8_2_draw_line_02.png

그림 8-2-2. 직선 그리기2.


이전글/다음글