[파이썬] PyQt 애니메이션 (`QAnimation`)

As a Python developer, you might come across scenarios where you want to add animations to your PyQt applications. PyQt provides a powerful module called QAnimation that allows you to create and control animations with ease.

In this blog post, we will explore how to use QAnimation to add animations to PyQt applications and make your user interfaces more engaging and dynamic.

1. Getting Started with PyQt

Before diving into animations, let’s make sure we have PyQt installed in our Python environment. To install PyQt, you can use pip by running the following command:

pip install pyqt5

2. Importing the Required Libraries

To use QAnimation, we need to import the necessary libraries:

from PyQt5.QtWidgets import *
from PyQt5.QtCore import QPropertyAnimation, QRect, Qt

The QPropertyAnimation class is specifically designed for animating Qt properties.

3. Creating Animations

To create an animation using QAnimation, you need to follow these steps:

Step 1: Create a widget

First, we create a widget on which we want to apply the animation:

class MyWidget(QWidget):
    def __init__(self):
        super().__init__()

        self.setGeometry(100, 100, 300, 200)
        self.setWindowTitle("Animation Example")

Step 2: Define the animation property

Next, we define the property we want to animate. In this example, we will animate the position of a label:

        self.label = QLabel("Hello, PyQt!", self)
        self.label.setAlignment(Qt.AlignCenter)
        self.label.setGeometry(50, 50, 200, 50)

Step 3: Create the animation object

Now, we create the QPropertyAnimation object and set up the animation properties. In this example, we will animate the label’s position over a duration of 5 seconds:

        self.animation = QPropertyAnimation(self.label, b"pos")
        self.animation.setDuration(5000)

Step 4: Set the animation values

We set the start and end values of the animation. For instance, let’s move the label from the initial position (50, 50) to (200, 100):

        self.animation.setStartValue(QRect(50, 50, 200, 50))
        self.animation.setEndValue(QRect(200, 100, 200, 50))

Step 5: Start the animation

Finally, we start the animation by calling the start() method:

        self.animation.start()

Step 6: Show the widget

After setting up the animation, we need to show the widget:

        self.show()

4. Running the Animation

To run the animation, we instantiate the MyWidget class and run the PyQt event loop:

if __name__ == "__main__":
    app = QApplication([])
    widget = MyWidget()
    app.exec_()

Now, if you run the code, you will see the label moving smoothly from its initial position to the final position over a duration of 5 seconds.

Conclusion

In this blog post, we learned how to use QAnimation in PyQt to add animations to our applications. By animating various properties of widgets, you can add visual interest and interactivity to your user interfaces.

Although we demonstrated a simple animation example here, you can explore more advanced animation techniques and effects using QAnimation. The PyQt documentation provides detailed information and examples to help you dive deeper into the world of Qt animations.

So go ahead and leverage the power of QAnimation to create stunning and responsive PyQt applications!