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

Class SlippedImgWidget

QLabel/ImageSlipped.py:21–69  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

19
20
21class SlippedImgWidget(QWidget):
22
23 def __init__(self, bg, fg, *args, **kwargs):
24 super(SlippedImgWidget, self).__init__(*args, **kwargs)
25 # 开启鼠标跟踪
26 self.setMouseTracking(True)
27 # 背景
28 self.bgPixmap = QPixmap(bg)
29 # 前景
30 self.pePixmap = QPixmap(fg)
31 # 最小尺寸(背景右边和下方隐藏10个像素)
32 size = self.bgPixmap.size()
33 self.setMinimumSize(size.width() - 10, size.height() - 10)
34 self.setMaximumSize(size.width() - 10, size.height() - 10)
35 # 分成10份用于鼠标移动判断
36 self.stepX = size.width() / 10
37 self.stepY = size.height() / 10
38 # 偏移量
39 self._offsets = [-4, -4, -4, -4] # 背景(-4,-4),前景(-4,-4)
40
41 def mouseMoveEvent(self, event):
42 super(SlippedImgWidget, self).mouseMoveEvent(event)
43 pos = event.pos()
44
45 # 偏移量
46 offsetX = 5 - int(pos.x() / self.stepX)
47 offsetY = 5 - int(pos.y() / self.stepY)
48 self._offsets[0] = offsetX
49 self._offsets[1] = offsetY
50 self._offsets[2] = offsetX
51 self._offsets[3] = offsetY
52 # 刷新
53 self.update()
54
55 def paintEvent(self, event):
56 super(SlippedImgWidget, self).paintEvent(event)
57 # 绘制图形
58 painter = QPainter(self)
59 painter.setRenderHint(QPainter.Antialiasing)
60 # 左上角偏移5个像素画背景图片
61 painter.drawPixmap(
62 -5 + self._offsets[0],
63 -5 + self._offsets[1], self.bgPixmap)
64 # 右下角偏移5个像素画前景图片
65 painter.drawPixmap(
66 self.width() - self.pePixmap.width() + 5 - self._offsets[2],
67 self.height() - self.pePixmap.height() + 5 - self._offsets[3],
68 self.pePixmap
69 )
70
71
72if __name__ == '__main__':

Callers 1

ImageSlipped.pyFile · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected