MCPcopy
hub / github.com/PyQt5/PyQt / __init__

Method __init__

QLabel/CircleImage.py:25–57  ·  view source on GitHub ↗
(self, *args, antialiasing=True, **kwargs)

Source from the content-addressed store, hash-verified

23class Label(QLabel):
24
25 def __init__(self, *args, antialiasing=True, **kwargs):
26 super(Label, self).__init__(*args, **kwargs)
27 self.Antialiasing = antialiasing
28 self.setMaximumSize(200, 200)
29 self.setMinimumSize(200, 200)
30 self.radius = 100
31
32 #####################核心实现#########################
33 self.target = QPixmap(self.size()) # 大小和控件一样
34 self.target.fill(Qt.transparent) # 填充背景为透明
35
36 p = QPixmap("Data/Images/head.jpg").scaled( # 加载图片并缩放和控件一样大
37 200, 200, Qt.KeepAspectRatioByExpanding, Qt.SmoothTransformation)
38
39 painter = QPainter(self.target)
40 if self.Antialiasing:
41 # 抗锯齿
42 painter.setRenderHint(QPainter.Antialiasing, True)
43 painter.setRenderHint(QPainter.HighQualityAntialiasing, True)
44 painter.setRenderHint(QPainter.SmoothPixmapTransform, True)
45
46 # painter.setPen(# 测试圆圈
47 # QPen(Qt.red, 5, Qt.SolidLine, Qt.RoundCap, Qt.RoundJoin))
48 path = QPainterPath()
49 path.addRoundedRect(
50 0, 0, self.width(), self.height(), self.radius, self.radius)
51 # **** 切割为圆形 ****#
52 painter.setClipPath(path)
53 # painter.drawPath(path) # 测试圆圈
54
55 painter.drawPixmap(0, 0, p)
56 self.setPixmap(self.target)
57 #####################核心实现#########################
58
59
60class Window(QWidget):

Callers 1

__init__Method · 0.45

Calls 3

widthMethod · 0.45
heightMethod · 0.45
setPixmapMethod · 0.45

Tested by

no test coverage detected