def paint(self, painter: QPainter, option: QStyleOptionGraphicsItem, widget: Optional[QWidget] = ...): painter.setPen(self.pen()) brush = self.brush() painter.setBrush(brush) path = QPainterPath() path.moveTo(self.__sourcePoint) path.cubicTo(self._edge1, self._edge2, self.__destPoint) if self._isDigraph: painter.setBrush(Qt.gray) painter.drawPolygon(self.drawArrow()) path.addPolygon(self.drawArrow()) painter.setBrush(Qt.NoBrush) if self.isSelected(): pen = painter.pen() pen.setColor(self.get_isSelectedPenColor()) else: pen = painter.pen() pen.setColor(self.get_noSelectedPenColor()) painter.setPen(pen) painter.drawPath(path) self.__path = path
def draw(self, painter: QPainter): super().draw(painter) pen = painter.pen() pen.setColor(QColor('darkgrey')) painter.setPen(pen) w = self.width h = self.height painter.drawLine(w//2, h*3//4, w*13//14, h*3//12)
def draw(cls, x, y, self: PreparedLine, painter: QPainter): old_pen = painter.pen() pen = QPen(QColor(0)) pen.setWidth(self.size) pen.setStyle(Qt.PenStyle.SolidLine) painter.setPen(pen) tx = self.left + x ty = self.top + y painter.drawLine(QLine(tx, ty, tx + self.width, ty + self.height)) painter.setPen(old_pen)
def __init__(self, name, baseSize, contourPath, presetFilename=None, image=None): """ @param name: @type name: str @param baseSize: @type baseSize: int @param contourPath: base shape of the brush family @type contourPath: QPainterPath @param presetFilename: preset file @type presetFilename: str """ self.name = name self.baseSize = baseSize # init the brush pixmap self.basePixmap = QPixmap(self.baseSize, self.baseSize) # to get an alpha channel, we must fill the pixmap a first time with an opacity < 255 self.basePixmap.fill(QColor(0, 0, 0, 0)) if self.name == 'eraser': self.basePixmap.fill(QColor(0, 0, 0, 255)) self.contourPath = contourPath # init brush cursor self.baseCursor = QPixmap(self.baseSize, self.baseSize) self.baseCursor.fill(QColor(0, 0, 0, 0)) qp = QPainter(self.baseCursor) pen = qp.pen() pen.setWidth(self.baseSize / 20) qp.setPen(pen) # needed!! qp.drawPath(contourPath) qp.end() self.__pxmp = None self.bOpacity = 1.0 self.bFlow = 1.0 self.bHardness = 1.0 self.preset = None if presetFilename is not None: img = QImage(presetFilename) elif image is not None: img = image else: return img = img.convertToFormat(QImage.Format_ARGB32) buf = QImageBuffer(img) b = np.sum(buf[..., :3], axis=-1, dtype=np.float) b /= 3 buf[..., 3] = b self.preset = QPixmap.fromImage(img)
class GroupMemberWidget(QWidget): def __init__(self, parent=None): super(GroupMemberWidget, self).__init__(parent) self.parent = parent self.setFixedSize(200, 50) self.setAcceptDrops(True) self._player_name = "" self._player_id = 0 self._csoport_number = 0 self._csoport_sor = 0 self.painter = QPainter() def _set_player_id(self, number): self._player_id = number # todo a beállításnál ez legyen használva def _set_csoport_number(self, number): self._csoport_number = number def _set_csoport_sor(self, number): self._csoport_sor = number def _set_player_name(self, name): self._player_name = name self.update() def _get_player_id(self): return int(self._player_id) def _get_csoport_number(self): return int(self._csoport_number) def _get_csoport_sor(self): return int(self._csoport_sor) def paintEvent(self, event): self.painter.begin(self) self.painter.setPen(QPen(QColor("blue"))) self.painter.setBrush(QBrush(QColor("lightgray"))) pen0 = QPen() pen0.setWidth(0) pen = self.painter.pen() self.painter.setPen(pen0) self.painter.drawRect(0, 0, 199, 49) font = QFont("Verdana, 20") font.setBold(True) self.painter.setFont(font) self.painter.setPen(pen) self.painter.drawText(5, 30, str(self._csoport_sor + 1)) self.painter.drawText(20, 30, self._player_name) # self.painter.drawText(20, 35, str(self._player_id) + " " + str(self._csoport_sor + 1) + " " + self._player_name) self.painter.end()
def paintEvent(self, e): """ Overrides the paint event to make it so that place holder text is displayed when the list is empty. """ super(CollectionStaticSelectionWidget, self).paintEvent(e) if self.count() == 0: painter = QPainter(self.viewport()) oldPen = painter.pen() painter.setPen(self.PLACEHOLDER_TEXT_PEN) painter.drawText( self.contentsRect(), Qt.AlignCenter | Qt.TextWordWrap, maya.stringTable[ 'y_collectionStaticSelectionWidget.kDragObjectsUsingOutlinerOrSelectFromViewport'] ) painter.setPen(oldPen)
def draw(cls, x, y, self: PreparedText, painter: QPainter): font = QFont(self.fontName) if self.fontSize: font.setPointSizeF(self.fontSize) if self.fontBold: font.setBold(True) if self.fontItalic: font.setItalic(True) brushStyle = self.brushStyle or Qt.BrushStyle.SolidPattern w = self.width h = self.height tx = self.left + x ty = self.top + y if self.border: w -= self.border.width h -= self.border.width * 2 tx += self.border.width ty += self.border.width rect = QRectF(tx, ty, w, h) if self.backColor: painter.setBrush(brush_style_map[brushStyle]) painter.fillRect(rect, QColor('#' + hex(self.backColor)[2:])) if self.allowTags: doc = QTextDocument() doc.setDefaultFont(font) doc.setHtml(self.text) doc.setDocumentMargin(0) painter.save() painter.translate(tx + 2, ty + 1) doc.drawContents(painter, QRectF(0, 0, self.width, self.height)) painter.restore() else: painter.save() painter.setFont(font) flags = cls.textFlags(self) rect.setX(rect.x() + 2) rect.setY(rect.y() + 1) painter.drawText(rect, flags, self.text) painter.restore() if self.border and self.border.color is not None: old_pen = painter.pen() pen = QPen( QColor(self.border.color), self.border.width, pen_style_map.get(self.border.style, Qt.PenStyle.SolidLine)) painter.setPen(pen) painter.drawLines( cls.getLines(self, self.left + x, self.top + y, self.left + self.width + x, self.top + y + self.height)) painter.setPen(old_pen)
def paint(self, painter: QPainter, option: QStyleOptionGraphicsItem, widget: QWidget = None): # setup border pen pen = painter.pen() pen.setWidthF(self.monitor_border_width) pen.setCapStyle(Qt.FlatCap) painter.setPen(pen) # create monitor_rect rect_monitor = QRectF(0, 0, self.monitor.screen_width, self.monitor.screen_height) # Draw gradient in the background gradient = QLinearGradient(rect_monitor.topRight(), rect_monitor.bottomLeft()) gradient.setColorAt(0.0, self.monitor_color_gradient_top) gradient.setColorAt(1.0, self.monitor_color_gradient_bottom) painter.fillRect(rect_monitor, gradient) # draw monitor label self.draw_monitor_label(painter, rect_monitor, self.index) # draw borders inside monitor_rect border_offset = painter.pen().widthF() / 2 border_rect = rect_monitor.adjusted(border_offset, border_offset, -border_offset, border_offset) painter.drawRect(border_rect)
def paintEvent(self, e): """ Draws the color bar and arrow """ if self.item(): painter = QPainter(self) # Draws the color bar painter.setPen(Qt.NoPen) rect = QRect(0, 0, self.COLOR_BAR_WIDTH, self.COLOR_BAR_HEIGHT) painter.fillRect(rect, self.item().data(renderSetupRoles.NODE_COLOR_BAR)) oldBrush = painter.brush() if self.item().type( ) == renderSetup.RENDER_OVERRIDE_TYPE and self.item( ).isLocalRender(): diameter = rect.width() - 2 rect2 = QRect(rect.x() + 1, rect.y() + (rect.height() - diameter) / 2, diameter, diameter) brush = painter.brush() pen = painter.pen() hints = painter.renderHints() painter.setRenderHint(QPainter.Antialiasing, on=True) painter.setPen(Qt.NoPen) painter.setBrush( QBrush(QColor(67, 79, 70), style=Qt.SolidPattern)) painter.drawEllipse(rect2) painter.setRenderHints(hints) painter.setPen(pen) painter.setBrush(brush) # Draws the arrow painter.setBrush(self.ARROW_COLOR) if self.arrowPoints == BaseDelegate.EXPANDED_ARROW: painter.translate(self.EXPANDED_ARROW_OFFSET, 0.0) else: painter.translate(self.COLLAPSED_ARROW_OFFSET, 0.0) painter.drawPolygon(self.arrowPoints) painter.setBrush(oldBrush) # Draws the node type text painter.setPen(QPen(self.item().data(Qt.TextColorRole))) text = self.item().data(renderSetupRoles.NODE_TYPE_STR) painter.setFont(self.item().data(Qt.FontRole)) painter.drawText(self.NODE_TYPE_TEXT_RECT, text, QTextOption(Qt.AlignLeft | Qt.AlignVCenter))
class SzumWidget(QWidget): def __init__(self, parent=None): super(SzumWidget, self).__init__(parent) self.setFixedSize(50, 50) self._ertek = 0 self._p_id = 0 self.painter = QPainter() def _set_p_id(self, number): self._p_id = number self.update() def _set_ertek(self, number): self._ertek = number self.update() def _get_p_id(self): return self._p_id def _get_ertek(self): return self._ertek def paintEvent(self, event): self.painter.begin(self) pen0 = QPen() pen0.setWidth(0) pen_def = self.painter.pen() pen_white = QPen(QColor(255, 255, 255)) pen_black = QPen(QColor(0, 0, 0)) pen_blue = QPen(QColor(0, 0, 255)) pen_red = QPen(QColor(255, 0, 0)) brush_black = QBrush(QColor(0, 0, 0)) brush_ready = QBrush(QColor(170, 255, 255)) brush_csak1 = QBrush(QColor(255, 255, 255)) self.painter.setBrush(brush_csak1) self.painter.setPen(pen0) self.painter.drawRect(0, 0, 49, 49) self.painter.setPen(pen_black) self.painter.drawText(25, 30, str(self._ertek)) self.painter.end()
def paint(self, painter: QPainter, option: QStyleOptionViewItem, index: QModelIndex) -> None: itemOption = QStyleOptionViewItem(option) # disable focus outline if itemOption.state & QStyle.State_HasFocus: itemOption.state ^= QStyle.State_HasFocus # hover whole row if index.row() == option.styleObject.hoverIndexRow: itemOption.state |= QStyle.State_MouseOver super().paint(painter, itemOption, index) # draw lines around numeric columns if index.column() in (5, 11): oldpen = painter.pen() painter.setPen(self.linepen) painter.drawLine( itemOption.rect.topRight() + QPoint(0, 0), itemOption.rect.bottomRight() + QPoint(0, 0) ) painter.setPen(oldpen)
def paintEvent(self, event): painter = QPainter(self) painter.setPen(Qt.NoPen) self.penFromEnum = painter.pen() painter.setPen(int(Qt.NoPen)) self.penFromInteger = painter.pen()
class GroupMemberWidget(QWidget): def __init__(self, parent=None): super(GroupMemberWidget, self).__init__(parent) self.parent = parent self.setFixedSize(200, 50) self.setAcceptDrops(True) self._player_name = "" self._player_id = 0 self._csoport_number = 0 self._csoport_sor = 0 self.painter = QPainter() def _set_sorok_szama(self, number): self.sorok_szama = number def _set_player_id(self, number): self._player_id = number self.update() def _set_player_name(self, name): self._player_name = str(name) self.update() # todo a beállításnál ez legyen használva def _set_csoport_number(self, number): self._csoport_number = number def _set_csoport_sor(self, number): self._csoport_sor = number def _get_player_id(self): return int(self._player_id) def _get_csoport_number(self): return int(self._csoport_number) def _get_csoport_sor(self): return int(self._csoport_sor) def paintEvent(self, event): self.painter.begin(self) self.painter.setPen(QPen(QColor("blue"))) self.painter.setBrush(QBrush(QColor("lightgray"))) pen0 = QPen() pen0.setWidth(0) pen = self.painter.pen() self.painter.setPen(pen0) self.painter.drawRect(0, 0, 199, 49) font = QFont("Verdana, 20") font.setBold(True) self.painter.setFont(font) self.painter.setPen(pen) self.painter.drawText(5, 30, str(self._csoport_sor + 1)) self.painter.drawText(20, 30, self._player_name + str(self._player_id)) self.painter.end() def dragEnterEvent(self, event): if event.mimeData().hasFormat("application/x-lista-item"): event.accept() else: event.ignore() def dragMoveEvent(self, event): if event.mimeData().hasFormat("application/x-lista-item"): event.setDropAction(Qt.MoveAction) event.accept() else: event.ignore() def dropEvent(self, event): if event.mimeData().hasFormat("application/x-lista-item"): data = event.mimeData().data("application/x-lista-item") stream = QDataStream(data, QIODevice.ReadOnly) self._player_name = stream.readQString() self._player_id = stream.readInt16() # sor eseten p1, oszlopnál p2 for i in range(self.sorok_szama): self.parent.eredmenyek[self._csoport_number][ self._csoport_sor][i]._set_p1_id(self._player_id) self.parent.eredmenyek[self._csoport_number][i][ self._csoport_sor]._set_p2_id(self._player_id) # print("id: ", self._player_id, "csoport: ", self._get_csoport_number(), "sor: ", self._get_csoport_sor()) # icon = QIcon() # stream >> icon event.setDropAction(Qt.MoveAction) event.accept() self.update() else: event.ignore() def mouseMoveEvent(self, event): self.startDrag() QWidget.mouseMoveEvent(self, event) def startDrag(self): data = QByteArray() stream = QDataStream(data, QIODevice.WriteOnly) stream.writeQString(self._player_name) stream.writeInt16(self._player_id) mimedata = QMimeData() mimedata.setData("application/x-lista-item", data) drag = QDrag(self) drag.setMimeData(mimedata) if drag.exec_(Qt.MoveAction) == Qt.MoveAction: self._player_name = "" self._player_id = 0 for i in range(self.sorok_szama): self.parent.eredmenyek[self._csoport_number][ self._csoport_sor][i]._set_p1_id(0) self.parent.eredmenyek[self._csoport_number][i][ self._csoport_sor]._set_p2_id(0) self.update()
class EredmenyWidget(QWidget): def __init__(self, parent=None): super(EredmenyWidget, self).__init__(parent) self.parent = parent self.setFixedSize(50, 50) self._player1_id = 0 self._player2_id = 0 self._csoport_number = 0 self._csoport_sor = 0 self._csoport_oszlop = 0 self.painter = QPainter() def _set_csoport_number(self, number): self._csoport_number = number self.update() def _set_csoport_sor(self, number): self._csoport_sor = number self.update() def _set_p1_id(self, number): self._player1_id = number self.update() def _set_p2_id(self, number): self._player2_id = number self.update() def _get_p1_id(self): return self._player1_id def _get_p2_id(self): return self._player2_id def _set_csoport_oszlop(self, number): self._csoport_oszlop = number def paintEvent(self, event): self.painter.begin(self) pen0 = QPen() pen0.setWidth(0) pen_def = self.painter.pen() pen_white = QPen(QColor(255, 255, 255)) pen_black = QPen(QColor(0, 0, 0)) pen_blue = QPen(QColor(0, 0, 255)) pen_red = QPen(QColor(255, 0, 0)) brush_black = QBrush(QColor(0, 0, 0)) brush_ready = QBrush(QColor(170, 255, 255)) brush_csak1 = QBrush(QColor(255, 255, 255)) if self._player1_id == self._player2_id: self.painter.setBrush(brush_black) self.painter.setPen(pen0) self.painter.drawRect(0, 0, 49, 49) self.painter.setPen(pen_red) self.painter.drawText( 15, 20, str(self._player1_id) + " : " + str(self._player2_id)) # self.painter.drawText(20, 35, "X") elif self._player1_id == 0 or self._player2_id == 0: self.painter.setBrush(brush_csak1) self.painter.setPen(pen0) self.painter.drawRect(0, 0, 49, 49) self.painter.setPen(pen_blue) self.painter.drawText( 15, 20, str(self._player1_id) + " : " + str(self._player2_id)) # self.painter.drawText(20, 35, "X") else: self.painter.setBrush(brush_ready) self.painter.setPen(pen0) self.painter.drawRect(0, 0, 49, 49) self.painter.setPen(pen_black) self.painter.drawText( 15, 20, str(self._player1_id) + " : " + str(self._player2_id)) self.painter.end()
starPath = QPainterPath() starPath.moveTo(28, 15) for i in range(5): starPath.lineTo(14 + 14 * math.cos(0.8 * i * math.pi), 15 + 14 * math.sin(0.8 * i * math.pi)) starPath.closeSubpath() star = QImage(30, 30, QImage.Format_ARGB32) star.fill(Qt.transparent) painter = QPainter(star) painter.setRenderHint(QPainter.Antialiasing) painter.setPen(QColor.fromRgb(0xf6, 0xa6, 0x25)) painter.setBrush(painter.pen().color()) painter.drawPath(starPath) series2.setBrush(star) series2.setPen(QColor(Qt.transparent)) chartView = QtCharts.QChartView(chart) chartView.setRenderHint(QPainter.Antialiasing) chart.addSeries(series0) chart.addSeries(series1) chart.addSeries(series2) chart.setTitle("Simple scatterchart example") chart.createDefaultAxes() chart.setDropShadowEnabled(False)
class EredmenyWidget(QWidget): def __init__(self, parent=None): super(EredmenyWidget, self).__init__(parent) self.parent = parent self.setFixedSize(50, 50) self._player1_id = 0 self._player2_id = 0 self._csoport_number = 0 self._csoport_sor = 0 self._csoport_oszlop = 0 self._leg1 = 0 self._leg2 = 0 self._pontszam = -1 self.painter = QPainter() def contextMenuEvent(self, event): print("context-menü") contextMenu = QMenu(self) firstAction = contextMenu.addAction("Egy") secondAction = contextMenu.addAction("Kettő") action = contextMenu.exec_(self.mapToGlobal(event.pos())) if action == firstAction: if self._csoport_sor < self._csoport_oszlop: match_id = (10000 * self.parent.torna_id) + ( 100 * self._player1_id) + self._player2_id elif self._csoport_sor > self._csoport_oszlop: match_id = (10000 * self.parent.torna_id) + ( 100 * self._player2_id) + self._player1_id # print("match_id: ", match_id, "player1: ", self._player1_id, self.parent.torna_id, "hány leg", self.parent.nyereshez_kell) winner_id = self._player1_id set_id = 1 now = datetime.now().strftime("%Y-%m-%d %H.%M.%S") query3 = QSqlQuery( f"delete from matches where match_id={match_id} and winner_id={winner_id}", db=db) query3.exec_() insertDataQuery = QSqlQuery() insertDataQuery.prepare(""" insert into matches ( match_id, leg_id, set_id, winner_id, timestamp ) values (?, ?, ?, ?, ?) """) for x in range(1, self.parent.nyereshez_kell + 1): insertDataQuery.addBindValue(match_id) insertDataQuery.addBindValue(x) insertDataQuery.addBindValue(1) insertDataQuery.addBindValue(winner_id) insertDataQuery.addBindValue(now) insertDataQuery.exec_() query2 = QSqlQuery( f"update torna_match set match_status=2 where match_id={match_id}", db=db) query2.exec_() def update_osszes_pont(self): self.parent.szum_eredmenyek[self._csoport_number][3][ self._csoport_sor]._set_ertek(0) for oszlop in range(self.parent.sorok_szama): self.parent.szum_eredmenyek[self._csoport_number][3][ self._csoport_sor]._set_ertek( self.parent.szum_eredmenyek[self._csoport_number][3][ self._csoport_sor]._get_ertek() + self.parent.eredmenyek[self._csoport_number][ self._csoport_sor][oszlop]._get_pontszam()) def change_leg1_number(self): self.parent.szum_eredmenyek[self._csoport_number][0][ self._csoport_sor]._set_ertek(0) for oszlop in range(self.parent.sorok_szama): self.parent.szum_eredmenyek[self._csoport_number][0][ self._csoport_sor]._set_ertek( self.parent.szum_eredmenyek[self._csoport_number][0] [self._csoport_sor]._get_ertek() + self.parent.eredmenyek[ self._csoport_number][self._csoport_sor][oszlop]._leg1) self.change_legs_dif() def change_leg2_number(self): self.parent.szum_eredmenyek[self._csoport_number][1][ self._csoport_sor]._set_ertek(0) for oszlop in range(self.parent.sorok_szama): self.parent.szum_eredmenyek[self._csoport_number][1][ self._csoport_sor]._set_ertek( self.parent.szum_eredmenyek[self._csoport_number][1] [self._csoport_sor]._get_ertek() + self.parent.eredmenyek[ self._csoport_number][self._csoport_sor][oszlop]._leg2) self.change_legs_dif() def change_legs_dif(self): self.parent.szum_eredmenyek[self._csoport_number][2][ self._csoport_sor]._set_ertek( self.parent.szum_eredmenyek[self._csoport_number][0] [self._csoport_sor]._get_ertek() - self.parent.szum_eredmenyek[ self._csoport_number][1][self._csoport_sor]._get_ertek()) def _set_csoport_number(self, number): self._csoport_number = number self.update() def _set_csoport_sor(self, number): self._csoport_sor = number self.update() def _set_csoport_oszlop(self, number): self._csoport_oszlop = number def _set_p1_id(self, number): self._player1_id = number self.update() def _set_p2_id(self, number): self._player2_id = number self.update() def _set_pontszam(self, number): self._pontszam = number self.update() def _set_leg1(self, number): self._leg1 = number self.update() def _set_leg2(self, number): self._leg2 = number self.update() def _get_leg1(self): return self._leg1 def _get_leg2(self): return self._leg2 def _get_p1_id(self): return self._player1_id def _get_p2_id(self): return self._player2_id def _get_pontszam(self): # Ha még nem játszották le 0-t ad vissza, egyébként a konkrét pontot if self._pontszam < 0: return 0 else: return self._pontszam def paintEvent(self, event): self.painter.begin(self) pen0 = QPen() pen0.setWidth(0) pen_def = self.painter.pen() pen_white = QPen(QColor(255, 255, 255)) pen_black = QPen(QColor(0, 0, 0)) pen_blue = QPen(QColor(0, 0, 255)) pen_red = QPen(QColor(255, 0, 0)) brush_black = QBrush(QColor(0, 0, 0)) brush_ready = QBrush(QColor(170, 255, 255)) brush_csak1 = QBrush(QColor(255, 255, 255)) brush_end = QBrush(QColor(200, 255, 150)) if self._player1_id == self._player2_id: self.painter.setBrush(brush_black) self.painter.setPen(pen0) self.painter.drawRect(0, 0, 49, 49) # self.painter.setPen(pen_red) # self.painter.drawText(2, 10, str(self._player1_id)) # self.painter.drawText(2, 20, str(self._player2_id)) # self.painter.drawText(20, 35, "X") elif self._player1_id == 0 or self._player2_id == 0: self.painter.setBrush(brush_csak1) self.painter.setPen(pen0) self.painter.drawRect(0, 0, 49, 49) # self.painter.setPen(pen_blue) # self.painter.drawText(2, 10, str(self._player1_id)) # self.painter.drawText(2, 20, str(self._player2_id)) # self.painter.drawText(25, 30, "X") else: if self._pontszam >= 0: self.painter.setBrush(brush_end) else: self.painter.setBrush(brush_ready) self.painter.setPen(pen0) self.painter.drawRect(0, 0, 49, 49) self.painter.setPen(pen_black) self.painter.drawText(12, 20, str(self._leg1)) self.painter.drawText(23, 20, " : ") self.painter.drawText(33, 20, str(self._leg2)) if self._pontszam >= 0: self.painter.drawText(21, 32, str(self._pontszam)) self.painter.end()
def paint(self, painter: QPainter, option: QStyleOptionGraphicsItem, widget: QWidget = ...): fillColor = self.color.darker( 150) if option.state & QStyle.State_Selected else self.color if option.state & QStyle.State_MouseOver: fillColor = fillColor.lighter(125) lod = option.levelOfDetailFromTransform(painter.worldTransform()) if lod < 0.2: if lod < 0.125: painter.fillRect(QRectF(0, 0, 110, 70), fillColor) return b = painter.brush() painter.setBrush(fillColor) painter.drawRect(13, 13, 97, 57) painter.setBrush(b) return oldPen = painter.pen() pen = oldPen width = 0 if option.state & QStyle.State_Selected: width += 2 pen.setWidth(width) b = painter.brush() painter.setBrush( QBrush( fillColor.darker(120 if option.state & QStyle.State_Sunken else 100))) painter.drawRect(QRect(14, 14, 79, 39)) painter.setBrush(b) if lod >= 1: painter.setPen(QPen(Qt.gray, 1)) painter.drawLine(15, 54, 94, 54) painter.drawLine(94, 53, 94, 15) painter.setPen(QPen(Qt.black, 0)) # Draw text if lod >= 2: font = QFont("Times", 10) font.setStyleStrategy(QFont.ForceOutline) painter.setFont(font) painter.save() painter.scale(0.1, 0.1) painter.drawText( 170, 180, f"Model: VSC-2000 (Very Small Chip) at {self.x}x{self.y}") painter.drawText(170, 200, "Serial number: DLWR-WEER-123L-ZZ33-SDSJ") painter.drawText(170, 220, "Manufacturer: Chip Manufacturer") painter.restore() # Drawlines lines: List[QLineF] = [] if lod >= 0.5: s = 1 if lod > 0.5 else 2 for i in range(0, 11, s): lines.append(QLineF(18 + 7 * i, 13, 18 + 7 * i, 5)) lines.append(QLineF(18 + 7 * i, 54, 18 + 7 * i, 62)) for i in range(0, 7, s): lines.append(QLineF(5, 18 + i * 5, 13, 18 + i * 5)) lines.append(QLineF(94, 18 + i * 5, 102, 18 + i * 5)) if lod >= 0.4: lines.extend([ QLineF(25, 35, 35, 35), QLineF(35, 30, 35, 40), QLineF(35, 30, 45, 35), QLineF(35, 40, 45, 35), QLineF(45, 30, 45, 40), QLineF(45, 35, 55, 35) ]) painter.drawLines(lines[:]) ## Draw red ink if len(self.stuff) > 1: p = painter.pen() painter.setPen( QPen(Qt.red, 1, Qt.SolidLine, Qt.RoundCap, Qt.RoundJoin)) painter.setBrush(Qt.NoBrush) path = QPainterPath() path.moveTo(self.stuff[0]) for i in range(1, len(self.stuff)): path.lineTo(self.stuff[i]) painter.drawPath(path) painter.setPen(p)