[파이썬] PyQt 그래픽스 씬 (`QGraphicsScene`)

PyQt is a powerful library for creating GUI applications in Python. It provides a wide range of widgets and modules to build visually appealing and interactive interfaces. One of the key features of PyQt is the support for graphics rendering with the QGraphicsScene class.

Introduction to QGraphicsScene

QGraphicsScene is a container class in PyQt that holds items such as graphics items or text items. It acts as a canvas or a scene on which we can place these items and manipulate them. The QGraphicsScene class provides a complete framework for handling 2D graphics with various functionalities like transformations, grouping, and event handling.

Creating a QGraphicsScene

To start working with QGraphicsScene, we first need to create an instance of it. This can be done using the QGraphicsScene constructor. Here’s an example:

from PyQt5.QtWidgets import QGraphicsScene

scene = QGraphicsScene()

In this example, we import the QGraphicsScene class from the PyQt5.QtWidgets module and create an instance of it called scene. This empty scene serves as a container for our graphical items.

Adding Items to QGraphicsScene

Once we have a QGraphicsScene instance, we can add various items to it. PyQt provides a rich set of predefined graphics items like rectangles, ellipses, lines, and text. Here’s an example of adding a rectangle and a text item to the scene:

from PyQt5.QtWidgets import QGraphicsRectItem, QGraphicsTextItem

rectangle = QGraphicsRectItem(0, 0, 100, 100)
text = QGraphicsTextItem("Hello World!")

scene.addItem(rectangle)
scene.addItem(text)

In this code snippet, we create a QGraphicsRectItem and a QGraphicsTextItem. We specify the position and size of the rectangle using the constructor arguments. Similarly, we pass the text string for the text item. Finally, we add both items to the scene using the addItem() method.

Displaying QGraphicsScene

After adding items to the scene, we need to display it. In PyQt, QGraphicsScene can be displayed using a QGraphicsView. Here’s an example of creating a QGraphicsView and setting the QGraphicsScene as its scene:

from PyQt5.QtWidgets import QGraphicsView

view = QGraphicsView(scene)
view.show()

In this example, we create a QGraphicsView instance called view and pass the scene as an argument to its constructor. This associates the scene with the view. Finally, we call the show() method of the view to display the scene.

Conclusion

In this blog post, we explored the basics of working with QGraphicsScene in PyQt. We learned how to create an empty scene, add items to it, and display the scene using a QGraphicsView. The QGraphicsScene class provides a powerful framework for creating and manipulating graphics in PyQt applications.