Python pyqt5实现将qlabel里的图像旋转
时间: 2024-02-17 17:00:41 浏览: 283
python GUI框架pyqt5 对图片进行流式布局的方法(瀑布流flowlayout)
好的,以下是Python PyQt5实现将QLabel中的图像旋转的示例代码。注释比较详细,希望对您有帮助。
```python
from PyQt5.QtGui import QPixmap, QPainter, QTransform
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QLabel, QWidget, QVBoxLayout, QApplication
class Example(QWidget):
def __init__(self):
super().__init__()
# 创建QLabel,并设置初始图像
self.label = QLabel(self)
self.label.setPixmap(QPixmap("image.png"))
# 创建QWidget作为背景
self.background = QWidget(self)
# 创建QVBoxLayout用于管理QWidget和QLabel的位置关系
self.layout = QVBoxLayout(self)
self.layout.addWidget(self.background)
self.layout.addWidget(self.label)
# 设置QWidget为背景
self.background.setAutoFillBackground(True)
self.background.setStyleSheet("background-color: #FFFFFF;")
# 将QLabel中的图像旋转
self.rotate_image(45)
def rotate_image(self, angle):
# 获取QLabel中的图像
pixmap = self.label.pixmap()
# 新建一个QPixmap,并将旋转后的图像绘制到其中
rotated_pixmap = QPixmap(pixmap.size())
rotated_pixmap.fill(Qt.transparent)
painter = QPainter(rotated_pixmap)
painter.translate(pixmap.size().width() / 2, pixmap.size().height() / 2)
painter.rotate(angle)
painter.translate(-pixmap.size().width() / 2, -pixmap.size().height() / 2)
painter.drawPixmap(0, 0, pixmap)
painter.end()
# 将旋转后的图像设置为QLabel中的图像
self.label.setPixmap(rotated_pixmap)
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
ex = Example()
ex.show()
sys.exit(app.exec_())
```
在这个示例中,我们首先创建一个QLabel并设置其初始图像。接下来,我们创建一个QWidget并将其作为背景。然后,我们创建一个QVBoxLayout来管理QWidget和QLabel的位置关系,并将它们添加到布局中。最后,我们将QWidget设置为白色背景,并通过`rotate_image()`函数将QLabel中的图像旋转45度。
在`rotate_image()`函数中,我们首先获取QLabel中的图像。然后,我们新建一个QPixmap,并在其中绘制旋转后的图像。最后,我们将旋转后的图像设置为QLabel中的图像。您可以通过更改`rotate_image()`函数中的旋转角度来更改图像的旋转角度。
阅读全文