프로그래밍/PyQt5 GUI
48. 직선 그리고 (drawLine)
디아블로
2021. 7. 29. 11:17
48-1 예제: ex47
import sys from PyQt5.QtWidgets import (QApplication, QWidget) 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.setWindowTitle('drawLine') self.setGeometry(300, 300, 400, 300) self.show() def paintEvent(self, e) -> None: 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, 8)) qp.drawLine(140, 60, 320, 280) qp.setPen(QPen(Qt.red, 8)) qp.drawLine(330, 250, 40, 190) if __name__ == '__main__': app = QApplication(sys.argv) win = MyApp() sys.exit(app.exec_()) |
48-2 설명
세 개의 직선이 그립니다.
setPen()을 이용해서 선의 색상과 두께를 설정합니다.
drawLine(x1, y1, x2, y2)의 형태로 선의 양 끝점의 위치를 정수로 입력해 줍니다.
48-3 결과
48-4 예제2
import sys from PyQt5.QtWidgets import (QApplication, QWidget) 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.setWindowTitle('drawLine') self.setGeometry(300, 300, 400, 300) self.show() def paintEvent(self, e) -> None: qp = QPainter() qp.begin(self) self.draw_line(qp) qp.end() 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') if __name__ == '__main__': app = QApplication(sys.argv) win = MyApp() sys.exit(app.exec_()) |
48-5 설명
QPen 위젯의 세 번째 매개변수에 Qt.SolidLine, Qt.DashLine 등을 입력하면 다양한 형태의 선 종류를 설정할 수 있습니다.
48-6 결과