def paintEvent(self, e): painter = QPainter(self) brush = QBrush(painter.brush()) self.bgcolor.setAlpha(20) painter.setBrush(self.bgcolor) painter.drawRect(0, 0, self.width(), self.height()) self.bgcolor.setAlpha(15) painter.setBrush(self.bgcolor) painter.drawRect(0, 20, self.width(), self.height()-40) painter.setBrush(brush) frame = self.clock.last_beat_frame x = self.x_for_frametime(frame) while x < self.width(): x = self.x_for_frametime(frame) painter.drawLine(x, 0, x, 15) painter.drawLine(x, self.height(), x, self.height() - 15) #painter.drawText(QPoint(x+5, 13), str(frame)) frame += self.clock.frames_per_beat() self.items = [i for i in self.items if i.endtime > self.frametime] for item in self.items: x = self.x_for_frametime(item.starttime) w = self.x_for_frametime(item.endtime) - x color = QColor(item.color) color.setAlpha(150) painter.setPen(color) pen = painter.pen() pen.setWidth(3) painter.setPen(pen) color.setAlpha(100) painter.setBrush(color) painter.drawRect(x, 0, w, self.height())
def set_user_icon(self, image_file_name): pixmap = QPixmap(32, 32) pixmap.fill(QColor(Qt.transparent)) painter = QPainter(pixmap) painter.setRenderHint(QPainter.Antialiasing, True) painter.setBrush(QBrush(Qt.white)) painter.setPen(QPen(painter.brush(), 0, Qt.NoPen)) #painter.drawRoundedRect(0, 0, 32, 32, 6, 6) painter.drawRoundedRect(0, 0, 32, 32, 0, 0) icon = QPixmap() if icon.load(image_file_name): icon = icon.scaled(32, 32, Qt.KeepAspectRatio, Qt.SmoothTransformation) painter.setCompositionMode(QPainter.CompositionMode_SourceOver) painter.drawPixmap(0, 0, icon) painter.end() self.image.setPixmap(pixmap)
def paintEvent(self, ev): painter = QPainter(self) # calc bar offset y_offset = (self.height() - self._barHeight()) // 2 ## prevent negative offset y_offset = 0 if y_offset < 0 else y_offset # frame around fraction indicator painter.setBrush(self.palette().dark()) painter.save() ## no fill color b = painter.brush() b.setStyle(Qt.NoBrush) painter.setBrush(b) painter.drawRect(QRect(QPoint(0, y_offset), QSize(self._barWidth(), self._barHeight()))) painter.restore() # fraction indicator painter.drawRect(QRect(QPoint(0, y_offset), QSize(self._barWidth() * self._fraction, self._barHeight())))
def paintEvent( self, ev ): painter = QPainter(self) # calc bar offset y_offset =(self.height() - self._barHeight()) // 2 ## prevent negative offset y_offset = 0 if y_offset < 0 else y_offset # frame around fraction indicator painter.setBrush(self.palette().dark()) painter.save() ## no fill color b = painter.brush(); b.setStyle(Qt.NoBrush); painter.setBrush(b) painter.drawRect( QRect(QPoint(0, y_offset), QSize(self._barWidth(), self._barHeight()))) painter.restore() # fraction indicator painter.drawRect( QRect(QPoint(0, y_offset), QSize(self._barWidth()*self._fraction, self._barHeight())))
class Printer(BasePrinter): FONT_NAME = 'Courrier' def __init__(self, *args, **kwargs): BasePrinter.__init__(self, *args, **kwargs) self.page_number = 0 self.printer = QPrinter(QPrinter.HighResolution) ## todo: remove-me self.printer.setOutputFileName("ufwi_log-page.pdf") self.printer.setOutputFormat(QPrinter.NativeFormat) #self.printer.setOrientation(QPrinter.Landscape) self.printer.setPaperSize(QPrinter.A4) self.printer.setResolution(100) def _init_painter(self): self.painter = QPainter(self.printer) self.painter.setRenderHint(QPainter.Antialiasing) self.painter.setBackgroundMode(Qt.OpaqueMode) self.painter.setBrush(Qt.white) self.painter.setFont(QFont(self.FONT_NAME, 9)) fillrect = QRect(0, 0, self.printer.pageRect().width(), self.printer.pageRect().height()) self.painter.fillRect(fillrect, self.painter.brush()) self.page_number = 1 self._draw_header() self._draw_footer() self.drawCentralTitle(self.title) if self.logo: self.painter.drawImage(QPoint(self.width() / 2 - self.logo.width() / 2, self.height() / 2 + QFontMetrics(self.painter.font()).height() + self.height() / 4 - self.logo.height() / 2), self.logo) def _draw_header(self): if not self.header_enabled: return h = -self.headerHeight() self.drawText(QDateTime.currentDateTime().toString('yyyy-MM-dd hh:mm'), h, Qt.AlignLeft) h += self.drawText(self.interval_label, h, Qt.AlignRight) self.drawText(self.title, h, Qt.AlignLeft) self.drawText(self.enterprise, h, Qt.AlignRight) self.painter.drawLine(0, self.headerHeight() - 1, self.printer.pageRect().width(), self.headerHeight() - 1) def _draw_footer(self): if not self.footer_enabled: return self.painter.drawLine(10, self.printer.pageRect().height() - self.footerHeight(), self.printer.pageRect().width() - 10, self.printer.pageRect().height() - self.footerHeight()) h = self.height() + 1 #self.drawText('topleft', h, Qt.AlignLeft) h += self.drawText(u'© 2008-2010 EdenWall', h, Qt.AlignRight, size=9) self.drawText(unicode(self.page_number), h, Qt.AlignHCenter) #self.drawText('bottomright', h, Qt.AlignRight) def headerHeight(self): if self.header_enabled: return 40 else: return 0 def footerHeight(self): if self.footer_enabled: return 40 else: return 0 def height(self): return self.printer.pageRect().height() - self.headerHeight() - self.footerHeight() def width(self): return self.printer.pageRect().width() def showDialog(self, parent): dialog = QPrintDialog(self.printer, parent) if dialog.exec_() != QPrintDialog.Accepted: return False self._init_painter() return True def end(self): self.painter.end() def newPage(self): self.printer.newPage() self.page_number += 1 self._draw_header() self._draw_footer() def drawCentralTitle(self, text): self.painter.setBackgroundMode(Qt.TransparentMode) f = QFont(self.FONT_NAME, 22) f.setWeight(QFont.Bold) self.painter.setFont(f) height = QFontMetrics(self.painter.font()).height() self.painter.drawText(QRect(0, self.printer.pageRect().height() * 0.5, self.printer.pageRect().width(), height), Qt.AlignHCenter | Qt.AlignVCenter, text) self.painter.setFont(QFont(self.FONT_NAME, 10)) def drawHCenteredTitle(self, text, vpos): self.painter.setBackgroundMode(Qt.TransparentMode) self.painter.setFont(QFont(self.FONT_NAME, 18)) height = QFontMetrics(self.painter.font()).height() self.painter.drawText(QRect(0, self.headerHeight() + vpos, self.printer.pageRect().width(), height), Qt.AlignHCenter | Qt.AlignVCenter, text) self.painter.setFont(QFont(self.FONT_NAME, 10)) return height def drawText(self, text, vpos, halign=Qt.AlignLeft, size=10, width=None): self.painter.setBackgroundMode(Qt.TransparentMode) self.painter.setFont(QFont(self.FONT_NAME, size)) height = QFontMetrics(self.painter.font()).height() if width is None: width = self.printer.pageRect().width() self.painter.drawText(QRect(0, self.headerHeight() + vpos, width, height), halign | Qt.AlignVCenter, text) return height def drawFragment(self, frag_widget, vpos, len_frags): # Display it on half the page scale = 1 single_frag = False if frag_widget.pos == len_frags - 1 and frag_widget.pos % 2 == 0: scale = 2 single_frag = True y = self.headerHeight() + vpos width = self.printer.pageRect().width() * 0.8 * scale height = self.printer.pageRect().height() * 0.5 * 0.8 x = self.printer.pageRect().width() * 0.1 if single_frag: if frag_widget.view.__class__.__name__ != "TreeFragmentView": x = -(width - self.printer.pageRect().width()) / 2. else: width = width / 2. rect = QRect(x, y, width, height) # Temporary remove stylesheet to avoid to print background. stylesheet_save = frag_widget.styleSheet() frag_widget.setStyleSheet('') frag_widget.getView().printMe(self.painter, rect) frag_widget.setStyleSheet(stylesheet_save)
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+' ')