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

Class CircleLineWindow

Demo/CircleLine.py:110–257  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

108
109
110class CircleLineWindow(QWidget):
111
112 def __init__(self, *args, **kwargs):
113 super(CircleLineWindow, self).__init__(*args, **kwargs)
114 # 设置背景颜色
115 palette = self.palette()
116 palette.setColor(palette.Background, backgroundColor)
117 self.setAutoFillBackground(True)
118 self.setPalette(palette)
119 # 获取屏幕大小
120 geometry = QApplication.instance().desktop().availableGeometry()
121 self.screenWidth = geometry.width()
122 self.screenHeight = geometry.height()
123 self._canDraw = True
124 self._firstDraw = True
125 self._timer = QTimer(self, timeout=self.update)
126 self.init()
127
128 def init(self):
129 points.clear()
130 # 链接的最小距离
131 self.linkDist = min(self.screenWidth, self.screenHeight) / 2.4
132 # 初始化点
133 for _ in range(maxCircles * 3):
134 points.append(Circle('', self.screenWidth, self.screenHeight))
135 self.update()
136
137 def showEvent(self, event):
138 super(CircleLineWindow, self).showEvent(event)
139 self._canDraw = True
140
141 def hideEvent(self, event):
142 super(CircleLineWindow, self).hideEvent(event)
143 # 窗口最小化要停止绘制, 减少cpu占用
144 self._canDraw = False
145
146 def paintEvent(self, event):
147 super(CircleLineWindow, self).paintEvent(event)
148 if not self._canDraw:
149 return
150 painter = QPainter(self)
151 painter.setRenderHint(QPainter.Antialiasing)
152 painter.setRenderHint(QPainter.SmoothPixmapTransform)
153 self.draw(painter)
154
155 def draw(self, painter):
156 if circlePulse:
157 if circleExp < circleExpMin or circleExp > circleExpMax:
158 circleExpSp *= -1
159 circleExp += circleExpSp
160
161 painter.translate(self.screenWidth / 2, self.screenHeight / 2)
162
163 if self._firstDraw:
164 t = time()
165 self.renderPoints(painter, points)
166 if self._firstDraw:
167 self._firstDraw = False

Callers 1

CircleLine.pyFile · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected