def __init__(self, parent=None, levelbus=None): PKWidget.__init__(self, parent) self.setFrameShape(QFrame.Panel) self.set_background(QColor(151, 169, 0)) self._foreground = QColor(58, 58, 58) self.levels = None self.levelbus = levelbus self.set_interval(self._interval) self.restart()
def paintEvent(self, e): PKWidget.paintEvent(self, e) painter = QPainter(self) if not self.levels: return pen = QPen(self._foreground.dark(150)) gradient = QLinearGradient(QPointF(0, 100), QPointF(0, 150)) gradient.setColorAt(0, self._foreground) gradient.setColorAt(1, self._foreground.light(150)) brush = QBrush(gradient) w = int(self.width() / 3.5) levels = self.levels channels = 2 # more channels later for i in range(channels): rms = levels['rms'][i] peak = levels['peak'][i] decay = levels['decay'][i] x = (w / 2) + int(w * 1.5 * i) h = self.height() painter.setBrush(brush) painter.setPen(pen) # peak painter.drawRect(x, h - (h * peak), w, h) # decay y = h - (h * decay) painter.drawLine(x, y, x + w, y) # rms painter.setBrush(QColor(100, 100, 100, 100)) painter.setPen(QColor(200, 200, 200, 50)) painter.drawRect(x, h - (h * rms), w, h)
def __init__(self, parent=None): PKWidget.__init__(self, parent) self._shown = [] self._genre = '' self.padding = 2
def paintEvent(self, e): """ """ PKWidget.paintEvent(self, e) painter = QPainter(self) orig_pen = QPen(painter.pen()) orig_brush = QBrush(painter.brush()) orig_font = QFont(painter.font()) metrics = painter.fontMetrics() f_height = metrics.ascent() text_flags = Qt.AlignHCenter | Qt.AlignVCenter region = e.region() for item in self._shown: font_y = item.y + item.height / 2 + f_height / 2 item_rect = QRect(0, item.y, self.width(), item.height) if not region.contains(item_rect): continue painter.setFont(orig_font) # background pen = item.color().dark(110) pen.setAlpha(100) painter.setBrush(QBrush(item.color())) painter.setPen(QPen(pen)) w = self.width() * (item.progress * .01) rect = QRect(0, item.y, w, item.height) painter.drawRect(rect) # queue pos pen = pen.dark(140) pen.setAlpha(255) painter.setPen(QPen(pen)) queue_rect = QRect(self.padding, item.y + self.padding, item.height - self.padding * 2, item.height - self.padding * 2) painter.drawRoundRect(queue_rect, 35, 35) # num if not item.num is None: painter.setPen(orig_pen) painter.setBrush(orig_brush) painter.drawText(queue_rect, text_flags, str(item.num)) # text painter.setPen(orig_pen) painter.setBrush(orig_brush) font = QFont('Utopia, Italic', 14, -1, True) painter.setFont(font) rect = QRect(item_rect) rect.setX(item.height + self.padding * 2) rect.setWidth(rect.width() - rect.x()) painter.drawText(rect, Qt.AlignVCenter | Qt.AlignLeft, item.text) # state if item.state: font = QFont('7th Service Expanded Italic, Italic') font.setPointSize(18) pen = QColor(orig_pen.color()) pen.setAlpha(50) painter.setPen(QPen(pen)) painter.setFont(font) x = item.x y = item.y w = self.width() h = item.height rect = QRect(x, y, w, h) flags = Qt.AlignVCenter | Qt.AlignRight painter.drawText(rect, flags, item.state+' ')