Skip to content
toylee blog · 컴퓨터, 프로그램 정보 공유

toylee blog · 컴퓨터, 프로그램 정보 공유

PyQt6 QGraphicsView 사용하기

toylee, 2023년 05월 23일

QGraphicsView는 파이썬 PyQt6에서 2D 그래픽을 그리기 위한 클래스입니다. 이 클래스를 사용하여 사용자가 그림을 그리거나 이동시킬 수 있도록 할 수 있으며, 여러 가지 추가적인 기능을 제공합니다. 예를 들어, GraphicsView를 사용하면 특정 부분만 확대하여 볼 수 있습니다. 또한 대용량 데이터의 처리를 위한 여러 가지 방법을 제공하기 때문에, 이를 통해 더욱 복잡한 그래픽을 처리할 수 있습니다. Python PyQt6 QGraphicsView 사용하기 이제 시작해 봅시다.

[목차]

  • 1. Pyqt6 QGraphicsView 란?
  • 2. Python PyQt6 QGraphicsView 사용하여 2D 그래픽 만들기
  • 3. Python PyQt6 QGraphicsView 마우스 이벤트
    • 1) 필요한 모듈 import
    • 2) SelectableRectItem 클래스를 정의/ QGraphicsItem

1. Pyqt6 QGraphicsView 란?

GraphicsView는 QGraphicsView, QGraphicsScene, QGraphicsItem 모듈들로 구성되어 있으며, 각각 다음과 같은 역할을 합니다.

  • QGraphicsView: 그래픽을 표시할 수 있는 뷰(View)를 제공합니다.
  • QGraphicsScene: 그래픽 객체들을 관리하는 씬(Scene)을 제공합니다.
  • QGraphicsItem: 그래픽 객체들을 생성하고 관리하는 아이템(Item)을 제공합니다.

2. Python PyQt6 QGraphicsView 사용하여 2D 그래픽 만들기

QGraphicsView를 사용하여 대화형 2D 그래픽을 만드는 방법은 다음과 같습니다.

  • QGraphicsScene 클래스를 사용하여 그래픽 객체를 생성합니다.
  • QGraphicsView 클래스를 사용하여 화면에 표시할 뷰(View)를 생성합니다.
  • QGraphicsView 객체에 QGraphicsScene 객체를 설정합니다.
  • QGraphicsItem 클래스를 사용하여 그래픽 객체를 생성하고, QGraphicsScene에 추가합니다.
  • 대화형 기능을 제공하기 위해 QGraphicsItem에서 제공하는 이벤트 핸들러를 사용합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from PyQt6.QtWidgets import QApplication, QGraphicsScene, QGraphicsView, QGraphicsRectItem
from PyQt6.QtCore import QRectF
import sys
 
class MyGraphicsView(QGraphicsView):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.scene = QGraphicsScene(self)
        self.setScene(self.scene)
 
        rect_item = QGraphicsRectItem(QRectF(0, 0, 100, 100))
        self.scene.addItem(rect_item)
 
 
if __name__ == ‘__main__’:
    app = QApplication(sys.argv)
    view = MyGraphicsView()
    view.show()
    sys.exit(app.exec())
 
Colored by Color Scripter
cs
Python PyQt6 QGraphicsView

MyGraphicsView 클래스를 만들고, 이 클래스에서 QGraphicsScene 및 QGraphicsView 객체를 생성합니다. 그런 다음 QGraphicsItem을 사용하여 직사각형 그래픽 객체를 만들고 QGraphicsScene에 추가합니다. 이제 대화형 2D 그래픽이 생성되었습니다.

3. Python PyQt6 QGraphicsView 마우스 이벤트

QGraphicsView를 사용하면 사용자가 그래픽 객체를 클릭하거나 드래그할 때 이벤트를 구현할 수 있습니다. 아래는 이러한 기능을 구현한 예시 코드입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
from PyQt6.QtWidgets import QApplication, QGraphicsScene, QGraphicsView, QGraphicsItem
from PyQt6.QtGui import QPen, QColor
from PyQt6.QtCore import Qt, QRectF
import sys
 
class SelectableRectItem(QGraphicsItem):
    def __init__(self, x, y, width, height):
        super().__init__()
        self.setFlag(QGraphicsItem.GraphicsItemFlag.ItemIsSelectable)
        self.setFlag(QGraphicsItem.GraphicsItemFlag.ItemIsMovable)
        self.setAcceptHoverEvents(True)
        self.rect = QRectF(x, y, width, height)
        self.pen = QPen(Qt.GlobalColor.black)
 
    def boundingRect(self):
        return self.rect
 
    def paint(self, painter, option, widget):
        painter.setPen(self.pen)
        painter.drawRect(self.rect)
 
    def hoverEnterEvent(self, event):
        self.pen.setColor(Qt.GlobalColor.red)
        self.update()
 
    def hoverLeaveEvent(self, event):
        self.pen.setColor(Qt.GlobalColor.black)
        self.update()
 
class MyGraphicsView(QGraphicsView):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.scene = QGraphicsScene(self)
        self.setScene(self.scene)
 
        rect_item = SelectableRectItem(0, 0, 100, 100)
        self.scene.addItem(rect_item)
 
if __name__ == ‘__main__’:
    app = QApplication(sys.argv)
    view = MyGraphicsView()
    view.show()
    sys.exit(app.exec())
 
Colored by Color Scripter
cs

PyQt6를 사용하여 그래픽 객체를 선택하고 이동할 수 있도록 구현되었습니다. 그래픽 객체 위에 마우스를 올리면 테두리가 빨간색으로 강조되며, 마우스를 벗어나면 기본 상태로 돌아갑니다.

View 1
Python PyQt6 QGraphicsView 2
QGraphicsView

1) 필요한 모듈 import

  • QApplication: PyQt6 애플리케이션을 생성하기 위한 클래스
  • QGraphicsScene: 그래픽 요소들을 담을 수 있는 씬(장면)
  • QGraphicsView: 씬을 표시하고 사용자와 상호작용할 수 있는 뷰
  • QGraphicsItem: 그래픽 요소의 기본 클래스
  • QPen: 그리기 작업에 사용되는 펜
  • QColor: 색상을 나타내는 클래스
  • Qt: Qt 프레임워크에서 사용되는 상수와 열거형을 포함한 모듈
  • QRectF: 실수 좌표로 사각형을 나타내는 클래스

2) SelectableRectItem 클래스를 정의/ QGraphicsItem

  • init 메서드에서 객체의 초기 설정을 수행합니다. 선택 가능하고 이동 가능하도록 플래그를 설정하고, 호버 이벤트를 수락하도록 설정합니다. 그리고 사각형의 위치와 크기, 그리기에 사용할 펜을 설정합니다.
  • boundingRect 메서드는 그래픽 요소의 경계 영역을 반환합니다.
  • paint 메서드는 그래픽 요소를 그리는 작업을 수행합니다.
  • hoverEnterEvent 메서드는 마우스가 요소 위로 진입할 때 호출되는 이벤트 핸들러입니다. 펜의 색상을 빨간색으로 변경하여 요소를 강조합니다.
  • hoverLeaveEvent 메서드는 마우스가 요소를 벗어날 때 호출되는 이벤트 핸들러입니다. 펜의 색상을 검은색으로 변경하여 기본 상태로 되돌립니다.

[관련글]

파이썬 pyqt6 qtableview 테이블 위젯 사용

파이썬 Tkinter 파일 불러오기-filedialog

PyQt6 QT Designer 사용자 지정 위젯

파이썬 pyqt6 qtableview 테이블 위젯 사용

파이썬 Python PyQt6 QGraphicsView

글 내비게이션

Previous post
Next post

Related Posts

파이썬

파이썬 딕셔너리 (dictionary) 사용 방법

2023년 07월 02일

오늘은 파이썬 딕셔너리 (dictionary) 사용 방법에 대해 정리합니다. 딕셔너리는 파이썬에서 가장 중요한 데이터 타입 중 하나입니다. 데이터를 저장하고 관리 할 수 있습니다. 딕셔너리(Dictionary)는 키와 값으로 구성되며, 이는 리스트(list)나 튜플(tuple)과 같은 다른 데이터 타입과는 다릅니다. 딕셔너리의 키와 값은 중복이 허용되지 않습니다. 이는 다양한 데이터를 다룰 때 매우 유용합니다. 딕셔너리는 중괄호 {}를…

Read More
파이썬

파이썬 프로그래밍에서 활용되는 가장 유용한 라이브러리들

2024년 05월 07일

파이썬은 다양한 분야에서 널리 사용되는 프로그래밍 언어입니다. 파이썬의 강력한 특징 중 하나는 다양한 라이브러리들을 활용할 수 있다는 점입니다. 이 글에서는 파이썬 프로그래밍에서 활용되는 가장 유용한 라이브러리들에 대해 살펴보겠습니다. 다양한 작업을 자동화하고 개발 시간을 단축하는데 도움이 되는 라이브러리들이 많이 있습니다. 이러한 라이브러리들을 잘 활용하면 더욱 효율적인 프로그래밍을 할 수 있습니다. 파이썬의 인기와 함께 라이브러리들도 계속 발전하고 있어, 프로그래머들은 더 다양한 옵션을 선택할 수 있습니다. 이를 통해 빠르고 효과적인 소프트웨어 개발이 가능해지고 있습니다.

Read More
파이썬

파이썬 리스트 인덱스, 슬라이싱, 중복제거

2025년 02월 07일2025년 02월 08일

파이썬 리스트는 데이터를 여러 개 모아서 저장할 수 있는 가장 기본적인 자료구조입니다. 이를 활용하면 여러 가지 작업을 더욱 간편하고 효율적으로 처리할 수 있습니다. 파이썬 리스트 각 데이터가 메모리의 연속된 위치에 저장되어, 인덱스를 통해 데이터를 접근할 수 있습니다. 예를 들어, 리스트에 저장된 데이터는 다음과 같은 방식으로 인덱싱됩니다 Index 0 1 2…

Read More

답글 남기기 응답 취소

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

최신 글

  • 드론 비행금지구역에 대해 알아볼게요
  • cpu 온도 측정 방법
  • 포토샵 단축키 모음 정리본
  • express vpn이란? 장점 및 단점
  • 안드로이드 버전 업그레이드 방법

최신 댓글

  1. 윈도우 단축키 모음 Best5의 ace
  2. http https 차이의 챗GPT 란? · Working for you

보관함

  • 2025년 7월
  • 2025년 6월
  • 2025년 5월
  • 2025년 4월
  • 2025년 3월
  • 2025년 2월
  • 2025년 1월
  • 2024년 12월
  • 2024년 11월
  • 2024년 8월
  • 2024년 6월
  • 2024년 5월
  • 2024년 3월
  • 2024년 2월
  • 2023년 11월
  • 2023년 9월
  • 2023년 8월
  • 2023년 7월
  • 2023년 6월
  • 2023년 5월
  • 2023년 4월
  • 2023년 3월
  • 2023년 2월

카테고리

  • flutter
  • html
  • linux
  • macbook
  • Pc Useful Tips
  • 미분류
  • 워드프레스
  • 자바(Java)
  • 파이썬
  • 프로그래밍
©2025 toylee blog · 컴퓨터, 프로그램 정보 공유 | WordPress Theme by SuperbThemes