MCPcopy Index your code
hub / github.com/PyQt5/PyQt / Window

Class Window

QLabel/ImageRotate.py:25–97  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

23
24
25class Window(QWidget):
26
27 def __init__(self, *args, **kwargs):
28 super(Window, self).__init__(*args, **kwargs)
29 layout = QVBoxLayout(self)
30 self.imageLabel = QLabel(self)
31 self.imageLabel.setAlignment(Qt.AlignCenter)
32 layout.addWidget(self.imageLabel)
33 clayout = QHBoxLayout()
34 layout.addItem(clayout)
35 clayout.addItem(QSpacerItem(
36 40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum))
37 clayout.addWidget(QPushButton('水平翻转', self, clicked=self.doHorFilp))
38 clayout.addWidget(QPushButton('垂直翻转', self, clicked=self.doVerFilp))
39 clayout.addWidget(QPushButton(
40 '顺时针45度', self, clicked=self.doClockwise))
41 clayout.addWidget(QPushButton(
42 '逆时针45度', self, clicked=self.doAnticlockwise))
43 clayout.addItem(QSpacerItem(
44 40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum))
45
46 # 原始图片
47 self.srcImage = QImage('Data/fg.png')
48 self.imageLabel.setPixmap(QPixmap.fromImage(self.srcImage))
49
50 def doHorFilp(self):
51 # 水平翻转
52 self.srcImage = self.srcImage.mirrored(True, False)
53 self.imageLabel.setPixmap(QPixmap.fromImage(self.srcImage))
54
55 def doVerFilp(self):
56 # 垂直翻转
57 self.srcImage = self.srcImage.mirrored(False, True)
58 self.imageLabel.setPixmap(QPixmap.fromImage(self.srcImage))
59
60 def doClockwise(self):
61 # 顺时针45度
62 image = QImage(self.srcImage.size(),
63 QImage.Format_ARGB32_Premultiplied)
64 painter = QPainter()
65 painter.begin(image)
66 # 以图片中心为原点
67 hw = self.srcImage.width() / 2
68 hh = self.srcImage.height() / 2
69 painter.translate(hw, hh)
70 painter.rotate(45) # 旋转45度
71 painter.drawImage(-hw, -hh, self.srcImage) # 把图片绘制上去
72 painter.end()
73 self.srcImage = image # 替换
74 self.imageLabel.setPixmap(QPixmap.fromImage(self.srcImage))
75
76 # # 下面这个旋转方法针对90度的倍数,否则图片会变大
77 # trans = QTransform()
78 # trans.rotate(90)
79 # self.srcImage = self.srcImage.transformed(
80 # trans, Qt.SmoothTransformation)
81 # self.imageLabel.setPixmap(QPixmap.fromImage(self.srcImage))
82

Callers 1

ImageRotate.pyFile · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected