本文整理汇总了Python中PyQt5.QtWidgets.QWidget.paintEvent方法的典型用法代码示例。如果您正苦于以下问题:Python QWidget.paintEvent方法的具体用法?Python QWidget.paintEvent怎么用?Python QWidget.paintEvent使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PyQt5.QtWidgets.QWidget
的用法示例。
在下文中一共展示了QWidget.paintEvent方法的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: paintEvent
# 需要导入模块: from PyQt5.QtWidgets import QWidget [as 别名]
# 或者: from PyQt5.QtWidgets.QWidget import paintEvent [as 别名]
def paintEvent(self, event):
QWidget.paintEvent(self, event)
self.update_cache()
if not self.cache:
return
rect = self._nscrollbar.overlay_rect()
sb_range = self._nscrollbar.get_scrollbar_range()
sb_range = max(self.visible_range, sb_range)
# horizontal_margin = 3
# result_width = rect.width() - 2 * horizontal_margin + 1
result_width = rect.width() / 3
result_height = min(rect.height() / sb_range + 1, 4)
# x = rect.left() + horizontal_margin
x = rect.center().x() - 1
offset = rect.height() / sb_range * self.range_offset
vertical_margin = ((rect.height() / sb_range) - result_height) / 2
painter = QPainter(self)
for lineno in self.cache.keys():
marker = self.cache[lineno]
top = rect.top() + offset + vertical_margin + \
marker.position / sb_range * rect.height()
# bottom = top + result_height
painter.fillRect(
x,
top,
result_width,
4,
QColor(marker.color))
示例2: paintEvent
# 需要导入模块: from PyQt5.QtWidgets import QWidget [as 别名]
# 或者: from PyQt5.QtWidgets.QWidget import paintEvent [as 别名]
def paintEvent(self, event):
QWidget.paintEvent(self, event)
painter = QPainter(self)
painter.setBrush(QBrush(QColor(Qt.black)))
painter.setPen(QPen())
painter.setOpacity(self.value)
painter.drawRect(self.rect())
示例3: paintEvent
# 需要导入模块: from PyQt5.QtWidgets import QWidget [as 别名]
# 或者: from PyQt5.QtWidgets.QWidget import paintEvent [as 别名]
def paintEvent(self, event):
"""由于继承的问题会导致子控件QWidget无法通过QSS设置样式,需要重写该方法"""
option = QStyleOption()
option.initFrom(self)
painter = QPainter(self)
self.style().drawPrimitive(QStyle.PE_Widget, option, painter, self)
QWidget.paintEvent(self, event)
# super(BaseWidget, self).paintEvent(event)
示例4: paintEvent
# 需要导入模块: from PyQt5.QtWidgets import QWidget [as 别名]
# 或者: from PyQt5.QtWidgets.QWidget import paintEvent [as 别名]
def paintEvent(self, QPaintEvent):
QWidget.paintEvent(self, QPaintEvent)
qp = QPainter()
qp.begin(self)
qp.setBrush(self.pointer.color)
qp.drawEllipse(0, 0, 10 - 1, 10 - 1)
qp.end()
示例5: paintEvent
# 需要导入模块: from PyQt5.QtWidgets import QWidget [as 别名]
# 或者: from PyQt5.QtWidgets.QWidget import paintEvent [as 别名]
def paintEvent(self, event):
if self.pendingMessageCount() == 0:
QWidget.paintEvent(self, event)
return
painter = QPainter(self)
painter.setPen(Qt.NoPen)
painter.setBrush(self.currentMessageBackground())
painter.drawRect(self.contentsRect())
示例6: paintEvent
# 需要导入模块: from PyQt5.QtWidgets import QWidget [as 别名]
# 或者: from PyQt5.QtWidgets.QWidget import paintEvent [as 别名]
def paintEvent(self, event):
QWidget.paintEvent(self, event)
width, height = self.width(), self.height()
polygon = QPolygon()
for i, rate in enumerate(self.loads):
x = width - i * self.pointDistance
y = height - rate * height
if x < self.boxWidth:
break
polygon.append(QPoint(x, y))
painter = QPainter(self)
pen = QPen()
pen.setColor(Qt.darkGreen)
painter.setPen(pen)
painter.setRenderHint(QPainter.Antialiasing, True)
#画网格
painter.setOpacity(0.5)
gridSize = self.pointDistance * 4
deltaX = (width - self.boxWidth) % gridSize + self.boxWidth
deltaY = height % gridSize
for i in range(int(width / gridSize)):
x = deltaX + gridSize * i
painter.drawLine(x, 0, x, height)
for j in range(int(height / gridSize)):
y = j * gridSize + deltaY
painter.drawLine(self.boxWidth, y, width, y)
#画折线
pen.setColor(Qt.darkCyan)
pen.setWidth(2)
painter.setPen(pen)
painter.setOpacity(1)
painter.drawPolyline(polygon)
#画展示框
if len(self.loads) > 0:
rate = self.loads[0]
else:
rate = 1.0
rect1 = QRect(4, height * 0.05, self.boxWidth - 9, height * 0.7)
rect2 = QRect(4, height * 0.8, self.boxWidth - 9, height * 0.2)
centerX = int(rect1.width() / 2) + 1
pen.setWidth(1)
for i in range(rect1.height()):
if i % 4 == 0:
continue
if (rect1.height() - i) / rect1.height() > rate:
pen.setColor(Qt.darkGreen)
else:
pen.setColor(Qt.green)
painter.setPen(pen)
for j in range(rect1.width()):
if centerX - 1 <= j <= centerX + 1:
continue
painter.drawPoint(rect1.x() + j, rect1.y() + i)
pen.setColor(Qt.black)
painter.setPen(pen)
painter.drawText(rect2, Qt.AlignHCenter | Qt.AlignVCenter, str(int(rate * 100)) + "%")
示例7: paintEvent
# 需要导入模块: from PyQt5.QtWidgets import QWidget [as 别名]
# 或者: from PyQt5.QtWidgets.QWidget import paintEvent [as 别名]
def paintEvent(self, event):
QWidget.paintEvent(self, event)
if self.dataSource is None:
return
painter = QPainter(self)
self.current_painter = painter
painter.setRenderHints(QPainter.Antialiasing|QPainter.TextAntialiasing)
painter.fillRect(self.rect(), Qt.white)
self.dataSource.draw()
del self.current_painter
示例8: paintEvent
# 需要导入模块: from PyQt5.QtWidgets import QWidget [as 别名]
# 或者: from PyQt5.QtWidgets.QWidget import paintEvent [as 别名]
def paintEvent(self, event):
QWidget.paintEvent(self, event)
if self.begin is None:
return
board = self.parent().board
pieceWidth = board.contentsRect().width() // TetrixBoard.BoardWidth
brush = QBrush(Qt.yellow)
painter = QPainter(self)
painter.setBrush(brush)
painter.drawRect(board.contentsRect().left() + self.begin * pieceWidth, 0, \
(self.end - self.begin + 1) * pieceWidth, self.height() - 1 )
示例9: paintEvent
# 需要导入模块: from PyQt5.QtWidgets import QWidget [as 别名]
# 或者: from PyQt5.QtWidgets.QWidget import paintEvent [as 别名]
def paintEvent(self, event):
if not globalSettings.lineNumbersEnabled:
return QWidget.paintEvent(self, event)
painter = QPainter(self)
painter.fillRect(event.rect(), colorValues['lineNumberArea'])
painter.setPen(colorValues['lineNumberAreaText'])
cursor = self.editor.cursorForPosition(QPoint(0, 0))
atEnd = False
fontHeight = self.fontMetrics().height()
height = self.editor.height()
if globalSettings.relativeLineNumbers:
relativeTo = self.editor.textCursor().blockNumber()
else:
relativeTo = -1
while not atEnd:
rect = self.editor.cursorRect(cursor)
if rect.top() >= height:
break
number = str(cursor.blockNumber() - relativeTo).replace('-', '−')
painter.drawText(0, rect.top(), self.width() - 2,
fontHeight, Qt.AlignRight, number)
cursor.movePosition(QTextCursor.EndOfBlock)
atEnd = cursor.atEnd()
if not atEnd:
cursor.movePosition(QTextCursor.NextBlock)
示例10: paintEvent
# 需要导入模块: from PyQt5.QtWidgets import QWidget [as 别名]
# 或者: from PyQt5.QtWidgets.QWidget import paintEvent [as 别名]
def paintEvent(self, event):
QWidget.paintEvent(self, event)
pen = QPen()
pen.setWidth(2)
pen.setColor(QColor(200, 200, 200))
rect = self.rect()
rect = rect.adjusted(0, 0, -1, -1)
painter = QPainter(self)
painter.setRenderHint(QPainter.Antialiasing, True)
painter.setPen(pen)
painter.setOpacity(0.5)
painter.setBrush(QBrush(QColor(Qt.white)))
painter.drawRoundedRect(rect, 15, 15)
painter.setOpacity(1)
pen.setColor(Qt.black)
painter.setPen(pen)
text = self.name + "\n" + self.description
painter.drawText(self.rect(), Qt.AlignHCenter | Qt.AlignVCenter, text)
示例11: paintEvent
# 需要导入模块: from PyQt5.QtWidgets import QWidget [as 别名]
# 或者: from PyQt5.QtWidgets.QWidget import paintEvent [as 别名]
def paintEvent(self, event):
QWidget.paintEvent(self, event)
p = QPainter(self)
view = self.view
first = view.firstVisibleBlock()
first_row = first.blockNumber()
block = first
row = first_row
y = view.contentOffset().y()
pageBottom = max(view.height(), view.verticalScrollBar().value() + view.viewport().height())
fm = self.fm
w = self.width() - 8
while block.isValid():
txt = str(row).rjust(5)
y = view.blockBoundingGeometry(block).y()
if y >= pageBottom:
break
x = w - fm.width(txt)
p.drawText(x, y, txt)
row += 1
block = block.next()
p.end()
示例12: paintEvent
# 需要导入模块: from PyQt5.QtWidgets import QWidget [as 别名]
# 或者: from PyQt5.QtWidgets.QWidget import paintEvent [as 别名]
def paintEvent(self, event):
if not globalSettings.lineNumbersEnabled:
return QWidget.paintEvent(self, event)
painter = QPainter(self)
painter.fillRect(event.rect(), colorValues['lineNumberArea'])
cursor = QTextCursor(self.editor.document())
cursor.movePosition(QTextCursor.Start)
atEnd = False
while not atEnd:
rect = self.editor.cursorRect(cursor)
block = cursor.block()
if block.isVisible():
number = str(cursor.blockNumber() + 1)
painter.setPen(colorValues['lineNumberAreaText'])
painter.drawText(0, rect.top(), self.width() - 2,
self.fontMetrics().height(), Qt.AlignRight, number)
cursor.movePosition(QTextCursor.EndOfBlock)
atEnd = cursor.atEnd()
if not atEnd:
cursor.movePosition(QTextCursor.NextBlock)
示例13: paintEvent
# 需要导入模块: from PyQt5.QtWidgets import QWidget [as 别名]
# 或者: from PyQt5.QtWidgets.QWidget import paintEvent [as 别名]
def paintEvent(self, pe):
p = QPainter(self)
p.setRenderHint(QPainter.Antialiasing)
pen = QPen()
pen.setWidth(1)
pen.setColor(QColor(0x8c, 0xa3, 0xb0))
p.setPen(pen)
p.setBrush(QColor(0xe4, 0xec, 0xf4))
rx = 6
space = self.space
w = self.usable_width
kw = self.key_w
def drawRow(row, sx, sy, last_end=False):
x = sx
y = sy
keys = row
rw = w - sx
i = 0
for k in keys:
rect = QRectF(x, y, kw, kw)
if i == len(keys) - 1 and last_end:
rect.setWidth(rw)
p.drawRoundedRect(rect, rx, rx)
p.setPen(Qt.black)
rect.adjust(5, 1, 0, 0)
p.setFont(self.lowerFont)
p.drawText(
rect, Qt.AlignLeft | Qt.AlignBottom, self.regular_text(k))
p.setFont(self.upperFont)
p.drawText(
rect, Qt.AlignLeft | Qt.AlignTop, self.shift_text(k))
rw = rw - space - kw
x = x + space + kw
i = i + 1
p.setPen(pen)
return (x, rw)
x = .5
y = .5
keys = self.kb["keys"]
ext_return = self.kb["extended_return"]
first_key_w = 0
rows = 4
remaining_x = [0, 0, 0, 0]
remaining_widths = [0, 0, 0, 0]
for i in range(0, rows):
if first_key_w > 0:
first_key_w = first_key_w * 1.375
if self.kb == self.kb_105 and i == 3:
first_key_w = kw * 1.275
rect = QRectF(x, y, first_key_w, kw)
p.drawRoundedRect(rect, rx, rx)
x = x + first_key_w + space
else:
first_key_w = kw
x, rw = drawRow(keys[i], x, y, i == 1 and not ext_return)
remaining_x[i] = x
remaining_widths[i] = rw
if i != 1 and i != 2:
rect = QRectF(x, y, rw, kw)
p.drawRoundedRect(rect, rx, rx)
x = .5
y = y + space + kw
if ext_return:
rx = rx * 2
x1 = remaining_x[1]
y1 = .5 + kw * 1 + space * 1
w1 = remaining_widths[1]
x2 = remaining_x[2]
y2 = .5 + kw * 2 + space * 2
# this is some serious crap... but it has to be so
# maybe one day keyboards won't look like this...
# one can only hope
pp = QPainterPath()
pp.moveTo(x1, y1 + rx)
pp.arcTo(x1, y1, rx, rx, 180, -90)
#.........这里部分代码省略.........
示例14: paintEvent
# 需要导入模块: from PyQt5.QtWidgets import QWidget [as 别名]
# 或者: from PyQt5.QtWidgets.QWidget import paintEvent [as 别名]
def paintEvent(self, ev):
QWidget.paintEvent(self, ev)