def _draw_indicator(self, event, qp): cx, cy, w, r = self._get_geometry(event) pen = qp.pen() pen.setWidth(3) pen.setColor(Qt.black) qp.setPen(pen) qp.setBrush(Qt.black) ro = r - 10 cx, cy = r + 5, r + 5 qp.translate(cx, cy) qp.rotate(self.indicator) path = QPainterPath() path.moveTo(-2, 0) path.lineTo(0, -ro) path.lineTo(2, 0) qp.drawPath(path) cr = 10 cr2 = cr / 2.0 qp.drawEllipse(-cr2, -cr2, cr, cr)
def paintEvent(self, event): qp = QPainter() qp.begin(self) qp.setRenderHint(QPainter.Antialiasing) qp.setBrush(self.color) qp.setPen(self.color) rect = event.rect() x = rect.x() w = rect.width() lineheight = 16 print('-------------------') print('lefts', self.lefts) print('rights', self.rights) print('-------------------') ly = self._left_y + 5 ry = self._right_y + 5 rs=self.rights[:] # offset=1 for i, l in enumerate(self.lefts): path = QPainterPath() sl, el = l[0], l[-1] try: r=rs[i] sr, er = r[0], r[-1] rs.pop(i) # offset+=1 except IndexError: sr, er = l[-1], l[-1]-1 y = ly + lineheight * sl y2 = ry + lineheight * sr path.moveTo(x, y) path.lineTo(x, y + lineheight * (el - sl + 1)) path.lineTo(x + w, y2 + lineheight * (er - sr + 1)) path.lineTo(x + w, y2) qp.drawPath(path) for i, r in enumerate(rs): path = QPainterPath() sr, er = r[0], r[-1] # try: l=self.lefts[i] sl, el = r[-1], r[-1]-1 # except IndexError: # sl, el = l[-1]+2, l[-1]+1 # print sl, el y = ly + lineheight * (sl) y2 = ry + lineheight * (sr) path.moveTo(x, y) path.lineTo(x, y + lineheight * (el - sl + 1)) path.lineTo(x + w, y2 + lineheight * (er - sr + 1)) path.lineTo(x + w, y2) qp.drawPath(path) qp.end()