def paintEvent(self, event):
"""
Overrides the QLabel method. Shouldn't need to be called directly.
"""
super().paintEvent(event)
if self._pixmap_src is None:
return
self._pixmap = self._pixmap_src.scaled(
self.size(), QtCore.Qt.KeepAspectRatio)
x = (self.width() - self._pixmap.width())/2
y = (self.height() - self._pixmap.height())/2
painter = QtGui.QPainter(self)
painter.drawPixmap(x, y, self._pixmap)
python类QPainter()的实例源码
def asama_ciz(asama,tum_asama):
#Amac?m?z pencerenin üzerinde gözüken ad?m k?sm? için gerekli resmi olu?turmak
resim = QImage(950,10,QImage.Format_RGB32)
boyayici = QPainter()
boyayici.begin(resim)
mavi_kalem = QPen(QColor("#00bbf2"))
mavi_firca = QBrush(QColor("#00bbf2"))
beyaz_kalem = QPen(QColor("#ffffff"))
beyaz_firca = QBrush(QColor("#ffffff"))
boyayici.setPen(beyaz_kalem)
boyayici.setBrush(beyaz_firca)
boyayici.drawRect(0,0,950,10)
boyayici.setPen(mavi_kalem)
boyayici.setBrush(mavi_firca)
en_hesabi = (asama/tum_asama)*950
boyayici.drawRect(0,0,int(en_hesabi),10)
boyayici.end()
return resim
def draw_progress_bar(plex_item, pixmap, height=6):
"""draw a progress indicator on the bottom of pixmap with height pixels"""
if not hasattr(plex_item, 'in_progress'):
return
if not plex_item.in_progress:
return
progress_color = QtGui.QColor(204, 123, 25)
progress = plex_item.view_offset / max(1, plex_item.duration)
p = QtGui.QPainter(pixmap)
rect = p.window()
progress_rect = QtCore.QRect(rect.bottomLeft() - QtCore.QPoint(0, height),
rect.bottomRight())
progress_fill = QtCore.QRect(progress_rect)
progress_fill.setWidth(rect.width() * progress)
p.fillRect(progress_rect, QtGui.QBrush(QtCore.Qt.black))
p.fillRect(progress_fill, QtGui.QBrush(progress_color))
def draw_unwatched_indicator(plex_item, pixmap, size=0.20):
"""draw a triangle on the top right of pixmap"""
if not hasattr(plex_item, 'watched') and not hasattr(plex_item, 'in_progress'):
return
if plex_item.watched or plex_item.in_progress:
return
p = QtGui.QPainter(pixmap)
rect = p.window()
top_right = rect.topRight()
size = pixmap.height() * size
color = QtGui.QColor(204, 123, 25)
triangle = QtGui.QPolygon([top_right, top_right - QtCore.QPoint(size, 0),
top_right + QtCore.QPoint(0, size)])
p.setPen(QtGui.QPen(QtGui.QBrush(QtGui.QColor(0, 0, 0, 120)), 6))
p.drawLine(triangle.point(1), triangle.point(2))
p.setBrush(QtGui.QBrush(color))
p.setPen(color)
p.drawPolygon(triangle)
def __init__(self, parent=None, ui_widget=None, home=None, window=None, logr=None):
global ui, MainWindow, logger
QtWidgets.QSystemTrayIcon.__init__(self, parent)
ui = parent
MainWindow = window
logger = logr
icon_img = os.path.join(home, 'src', 'tray.png')
self.right_menu = RightClickMenuIndicator(ui_widget=ui_widget,
window=window, logr=logr)
self.setContextMenu(self.right_menu)
self.activated.connect(self.onTrayIconActivated)
self.p = QtGui.QPixmap(24, 24)
self.p.fill(QtGui.QColor("transparent"))
painter = QtGui.QPainter(self.p)
if os.path.exists(icon_img):
self.setIcon(QtGui.QIcon(icon_img))
else:
self.setIcon(QtGui.QIcon(""))
self.full_scr = 1
del painter
def capture(self, url):
print('--load')
self.load(QUrl(url))
self.wait_load()
self.show()
size = self.page().contentsSize()
self.page().view().resize(*[int(s) for s in [size.width(), size.height()]])
print('--take image')
image = QImage(800, 800, QImage.Format_ARGB32)
painter = QPainter(image)
print('--render')
self.page().view().render(painter)
painter.end()
print('Saving QImage')
img_bytes = QByteArray()
bio = QBuffer(img_bytes)
bio.open(QIODevice.WriteOnly)
image.save(bio, 'PNG')
return img_bytes
def paintEvent(self, QPaintEvent):
y_offset=100
x_offset=50
painter = QPainter()
painter.begin(self)
if self.load_type.sim_mode.currentText()=="load":
painter.drawPixmap(x_offset,y_offset, self.diode)
painter.drawPixmap(x_offset+620,y_offset+67, self.load)
elif self.load_type.sim_mode.currentText()=="ideal_diode_ideal_load":
painter.drawPixmap(x_offset,y_offset, self.ideal_diode)
painter.drawPixmap(x_offset+620,y_offset+68, self.ideal_load)
else:
painter.drawPixmap(x_offset,y_offset, self.diode)
painter.drawPixmap(x_offset+620,y_offset+57, self.voc)
painter.end()
def updateColor(self, item):
pixmap = QPixmap(16, 16)
color = QColor()
if item:
color = item.backgroundColor()
if not color.isValid():
color = self.palette().base().color()
painter = QPainter(pixmap)
painter.fillRect(0, 0, 16, 16, color)
lighter = color.lighter()
painter.setPen(lighter)
# light frame
painter.drawPolyline(QPoint(0, 15), QPoint(0, 0), QPoint(15, 0))
painter.setPen(color.darker())
# dark frame
painter.drawPolyline(QPoint(1, 15), QPoint(15, 15), QPoint(15, 1))
painter.end()
self.colorAction.setIcon(QIcon(pixmap))
def showNextPiece(self):
if self.nextPieceLabel is None:
return
dx = self.nextPiece.maxX() - self.nextPiece.minX() + 1
dy = self.nextPiece.maxY() - self.nextPiece.minY() + 1
pixmap = QPixmap(dx * self.squareWidth(), dy * self.squareHeight())
painter = QPainter(pixmap)
painter.fillRect(pixmap.rect(), self.nextPieceLabel.palette().window())
for i in range(4):
x = self.nextPiece.x(i) - self.nextPiece.minX()
y = self.nextPiece.y(i) - self.nextPiece.minY()
self.drawSquare(painter, x * self.squareWidth(),
y * self.squareHeight(), self.nextPiece.shape())
painter.end()
self.nextPieceLabel.setPixmap(pixmap)
def createData(self, mimeType):
if mimeType != 'image/png':
return
image = QImage(self.imageLabel.size(), QImage.Format_RGB32)
painter = QPainter()
painter.begin(image)
self.imageLabel.renderer().render(painter)
painter.end()
data = QByteArray()
buffer = QBuffer(data)
buffer.open(QIODevice.WriteOnly)
image.save(buffer, 'PNG')
buffer.close()
self.mimeData.setData('image/png', data)
def paintEvent(self, event):
painter = QPainter(self)
if len(self.m_histogram) == 0:
painter.fillRect(0, 0, self.width(), self.height(),
QColor.fromRgb(0, 0, 0))
return
barWidth = self.width() / float(len(self.m_histogram))
for i, value in enumerate(self.m_histogram):
h = value * self.height()
# Draw the level.
painter.fillRect(barWidth * i, self.height() - h,
barWidth * (i + 1), self.height(), Qt.red)
# Clear the rest of the control.
painter.fillRect(barWidth * i, 0, barWidth * (i + 1),
self.height() - h, Qt.black)
def updateColor(self, item):
pixmap = QPixmap(16, 16)
color = QColor()
if item:
color = item.backgroundColor()
if not color.isValid():
color = self.palette().base().color()
painter = QPainter(pixmap)
painter.fillRect(0, 0, 16, 16, color)
lighter = color.lighter()
painter.setPen(lighter)
# light frame
painter.drawPolyline(QPoint(0, 15), QPoint(0, 0), QPoint(15, 0))
painter.setPen(color.darker())
# dark frame
painter.drawPolyline(QPoint(1, 15), QPoint(15, 15), QPoint(15, 1))
painter.end()
self.colorAction.setIcon(QIcon(pixmap))
def showNextPiece(self):
if self.nextPieceLabel is None:
return
dx = self.nextPiece.maxX() - self.nextPiece.minX() + 1
dy = self.nextPiece.maxY() - self.nextPiece.minY() + 1
pixmap = QPixmap(dx * self.squareWidth(), dy * self.squareHeight())
painter = QPainter(pixmap)
painter.fillRect(pixmap.rect(), self.nextPieceLabel.palette().window())
for i in range(4):
x = self.nextPiece.x(i) - self.nextPiece.minX()
y = self.nextPiece.y(i) - self.nextPiece.minY()
self.drawSquare(painter, x * self.squareWidth(),
y * self.squareHeight(), self.nextPiece.shape())
painter.end()
self.nextPieceLabel.setPixmap(pixmap)
def createData(self, mimeType):
if mimeType != 'image/png':
return
image = QImage(self.imageLabel.size(), QImage.Format_RGB32)
painter = QPainter()
painter.begin(image)
self.imageLabel.renderer().render(painter)
painter.end()
data = QByteArray()
buffer = QBuffer(data)
buffer.open(QIODevice.WriteOnly)
image.save(buffer, 'PNG')
buffer.close()
self.mimeData.setData('image/png', data)
def paintEvent(self, event):
painter = QPainter(self)
if len(self.m_histogram) == 0:
painter.fillRect(0, 0, self.width(), self.height(),
QColor.fromRgb(0, 0, 0))
return
barWidth = self.width() / float(len(self.m_histogram))
for i, value in enumerate(self.m_histogram):
h = value * self.height()
# Draw the level.
painter.fillRect(barWidth * i, self.height() - h,
barWidth * (i + 1), self.height(), Qt.red)
# Clear the rest of the control.
painter.fillRect(barWidth * i, 0, barWidth * (i + 1),
self.height() - h, Qt.black)
def __init__(self,parent=None):
global name,home
QtWidgets.QSystemTrayIcon.__init__(self, parent)
icon_img = os.path.join(home,'src','tray.png')
self.right_menu = RightClickMenuIndicator()
self.setContextMenu(self.right_menu)
self.activated.connect(self.onTrayIconActivated)
self.p = QtGui.QPixmap(24,24)
self.p.fill(QtGui.QColor("transparent"))
painter = QtGui.QPainter(self.p)
if os.path.exists(icon_img):
self.setIcon(QtGui.QIcon(icon_img))
else:
self.setIcon(QtGui.QIcon(""))
self.full_scr = 1
del painter
def __init__(self,parent=None):
global name,home
QtWidgets.QSystemTrayIcon.__init__(self, parent)
icon_img = os.path.join(home,'src','tray.png')
self.right_menu = RightClickMenuIndicator()
self.setContextMenu(self.right_menu)
self.activated.connect(self.onTrayIconActivated)
self.p = QtGui.QPixmap(24,24)
self.p.fill(QtGui.QColor("transparent"))
painter = QtGui.QPainter(self.p)
if os.path.exists(icon_img):
self.setIcon(QtGui.QIcon(icon_img))
else:
self.setIcon(QtGui.QIcon(""))
self.full_scr = 1
del painter
def updateColor(self, item):
pixmap = QPixmap(16, 16)
color = QColor()
if item:
if hasattr(item, 'backgroundColor'):
color = item.backgroundColor()
if not color.isValid():
color = self.palette().base().color()
painter = QPainter(pixmap)
painter.fillRect(0, 0, 16, 16, color)
lighter = color.lighter()
painter.setPen(lighter)
# light frame
painter.drawPolyline(QPoint(0, 15), QPoint(0, 0), QPoint(15, 0))
painter.setPen(color.darker())
# dark frame
painter.drawPolyline(QPoint(1, 15), QPoint(15, 15), QPoint(15, 1))
painter.end()
self.colorAction.setIcon(QIcon(pixmap))
def showNextPiece(self):
if self.nextPieceLabel is None:
return
dx = self.nextPiece.maxX() - self.nextPiece.minX() + 1
dy = self.nextPiece.maxY() - self.nextPiece.minY() + 1
pixmap = QPixmap(dx * self.squareWidth(), dy * self.squareHeight())
painter = QPainter(pixmap)
painter.fillRect(pixmap.rect(), self.nextPieceLabel.palette().window())
for i in range(4):
x = self.nextPiece.x(i) - self.nextPiece.minX()
y = self.nextPiece.y(i) - self.nextPiece.minY()
self.drawSquare(painter, x * self.squareWidth(),
y * self.squareHeight(), self.nextPiece.shape())
painter.end()
self.nextPieceLabel.setPixmap(pixmap)
def createData(self, mimeType):
if mimeType != 'image/png':
return
image = QImage(self.imageLabel.size(), QImage.Format_RGB32)
painter = QPainter()
painter.begin(image)
self.imageLabel.renderer().render(painter)
painter.end()
data = QByteArray()
buffer = QBuffer(data)
buffer.open(QIODevice.WriteOnly)
image.save(buffer, 'PNG')
buffer.close()
self.mimeData.setData('image/png', data)
def paintEvent(self, event):
painter = QPainter(self)
if len(self.m_histogram) == 0:
painter.fillRect(0, 0, self.width(), self.height(),
QColor.fromRgb(0, 0, 0))
return
barWidth = self.width() / float(len(self.m_histogram))
for i, value in enumerate(self.m_histogram):
h = value * self.height()
# Draw the level.
painter.fillRect(barWidth * i, self.height() - h,
barWidth * (i + 1), self.height(), Qt.red)
# Clear the rest of the control.
painter.fillRect(barWidth * i, 0, barWidth * (i + 1),
self.height() - h, Qt.black)
def draw_box(self, n, box, color, style, num):
x1, y1, x2, y2 = box.left(), box.top(), box.right(), box.bottom()
x1 = int(x1 * self.i_scale[n])
y1 = int(y1 * self.i_scale[n])
x2 = int(x2 * self.i_scale[n])
y2 = int(y2 * self.i_scale[n])
width = BASEWIDTH
if style == 'match':
width *= 2
painter = QPainter(self.i_pixmap[n])
painter.setPen(QPen(QBrush(color), width))
painter.drawRect(x1, y1, x2 - x1, y2 - y1)
painter.setPen(QPen(QBrush(TEXTCOLOR), TEXTWIDTH))
painter.setFont(TEXTFONT)
painter.drawText(x1, y2 + TEXTSIZE + 2 * BASEWIDTH, '{}: {}'.format(n + 1, num))
painter.end()
self.i_lbl[n].setPixmap(self.i_pixmap[n])
def saveImage(self, fname): # noqa: N802
"""
Saves current viewport as a png file of the given fname.
"""
rect = self.viewport()
rgb = QtGui.QImage.Format_RGB32
image = QtGui.QImage(rect.width(), rect.height(), rgb)
image.fill(QtGui.QColor(255, 255, 255))
painter = QtGui.QPainter(image)
self.render(painter)
if not image.save(fname):
raise ValueError('could not save image %s' % fname)
del painter
def draw_edges(image, edges):
p = QPainter()
p.begin(image)
p.setPen(QPen(col_one))
for ed in edges:
p.drawLine(ed[0], ed[1], ed[2], ed[3])
p.end()
def draw_edges(image, edges):
p = QPainter()
p.begin(image)
p.setPen(QPen(QColor(0, 0, 255)))
for ed in edges:
p.drawLine(ed[0], ed[1], ed[2], ed[3])
p.end()
def draw_circle(image, rad, point):
p = QPainter()
p.begin(image)
p.setPen(QPen(QColor(0, 0, 255)))
p.drawEllipse(point.x() - rad, point.y() - rad, rad * 2, rad * 2)
p.end()
def paintEvent(self, event):
super().paintEvent(event)
painter = QtGui.QPainter()
painter.begin(self)
self.draw_ticks(painter)
painter.end()
def paintEvent(self, event):
painter = QtGui.QPainter(self)
w = self.width()
h = self.height()
# background
painter.setPen(QtCore.Qt.gray)
painter.setBrush(QtCore.Qt.lightGray)
painter.drawRect(2, 2, w-4, h-4)
# range bar
painter.setPen(QtCore.Qt.darkGray)
painter.setBrush(QtCore.Qt.darkGray)
painter.drawRect(self.display_min-1, 5, self.display_max-self.display_min+2, h-10)
# min & max tabs
painter.setPen(QtCore.Qt.black)
painter.setBrush(QtCore.Qt.gray)
painter.drawRect(self.display_min-self.bar_width, 1, self.bar_width, h-2)
painter.setPen(QtCore.Qt.black)
painter.setBrush(QtCore.Qt.gray)
painter.drawRect(self.display_max, 1, self.bar_width, h-2)
## rangeSliderSize
#
# @return The current width of the slider widget.
#
def paintEvent(self, event):
painter = QtGui.QPainter(self)
w = self.width()
h = self.height()
# background
painter.setPen(QtCore.Qt.gray)
painter.setBrush(QtCore.Qt.lightGray)
painter.drawRect(2, 2, w-4, h-4)
# range bar
painter.setPen(QtCore.Qt.darkGray)
painter.setBrush(QtCore.Qt.darkGray)
painter.drawRect(5, h-self.display_max-1, w-10, self.display_max-self.display_min+1)
# min & max tabs
painter.setPen(QtCore.Qt.black)
painter.setBrush(QtCore.Qt.gray)
painter.drawRect(1, h-self.display_max-self.bar_width-1, w-2, self.bar_width)
painter.setPen(QtCore.Qt.black)
painter.setBrush(QtCore.Qt.gray)
painter.drawRect(1, h-self.display_min-1, w-2, self.bar_width)
## rangeSliderSize
#
# @return The current height of the slider widget.
#
def paintEvent(self, event):
qp = QPainter(self)
qp.setPen(Qt.black)
size = self.size()
for i in range(1024):
x = random.randint(1, size.width()-1)
y = random.randint(1, size.height()-1)
qp.drawPoint(x, y)