一、QPen
QPen(钢笔)是一个基本的图形对象,用于绘制直线,曲线或者给轮廓画出矩形,椭圆形,多边形及其他形状
例子:
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import Qt
class QPenDemo(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(300, 300, 280, 270)
self.setWindowTitle('画线条')
def paintEvent(self, e):
qp = QPainter()
qp.begin(self)
self.drawLines(qp)
qp.end()
def drawLines(self, qp):
pen = QPen(Qt.blue, 3, Qt.SolidLine)
qp.setPen(pen)
qp.drawLine(20, 40, 250, 40)
pen.setStyle(Qt.DashLine)
qp.setPen(pen)
qp.drawLine(20, 80, 250, 80)
pen.setStyle(Qt.DashDotLine)
qp.setPen(pen)
qp.drawLine(20, 120, 250, 120)
pen.setStyle(Qt.DotLine)
qp.setPen(pen)
qp.drawLine(20, 160, 250, 160)
pen.setStyle(Qt.DashDotDotLine)
qp.setPen(pen)
qp.drawLine(20, 200, 250, 200)
pen.setStyle(Qt.CustomDashLine)
pen.setDashPattern([1, 4, 5, 4])
qp.setPen(pen)
qp.drawLine(20, 240, 250, 240)
if __name__ == '__main__':
app = QApplication(sys.argv)
demo = QPenDemo()
demo.show()
sys.exit(app.exec_())
二、Qbrush
PyQt5中QBrush 是一个用于绘制图形的工具。QBrush 对象主要用于定义图形的填充方式,比如颜色、纹理等。与 QPainter 对象一起使用,QBrush 负责在窗口或小部件上绘制图形
部分填充样式:
方法 | 描述 |
---|---|
Qt.SolidPattern | 填充单一的颜色,没有任图案。 |
Qt.Dense1Pattern | 密集填充图案1 |
Qt.Dense2Pattern | 密集填充图案2 |
Qt.Dense3Pattern | 密集填充图案3 |
Qt.Dense5Pattern | 密集填充图案5 |
Qt.HorPattern | 绘制水平线条图案。 |
Qt.FDiagPattern | 绘制斜向的线条,线条从左上角到右下角。 |
Qt.DiagCrossPattern | 绘制较差斜向线条。 |
例子:
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import Qt
class QBrushDemo(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(300, 300, 365, 280)
self.setWindowTitle('填充')
self.show()
def paintEvent(self, e):
qp = QPainter()
qp.begin(self)
self.drawLines(qp)
qp.end()
def drawLines(self, qp):
brush = QBrush(Qt.SolidPattern)
brush.setColor(QColor(Qt.green))
qp.setBrush(brush)
qp.drawRect(10, 15, 90, 60)
brush = QBrush(Qt.Dense1Pattern)
brush.setColor(QColor(Qt.blue))
qp.setBrush(brush)
qp.drawRect(130, 15, 90, 60)
brush = QBrush(Qt.Dense2Pattern)
brush.setColor(QColor(Qt.red))
qp.setBrush(brush)
qp.drawRect(250, 15, 90, 60)
brush = QBrush(Qt.Dense3Pattern)
qp.setBrush(brush)
qp.drawRect(10, 105, 90, 60)
brush = QBrush(Qt.DiagCrossPattern)
qp.setBrush(brush)
qp.drawRect(10, 105, 90, 60)
brush = QBrush(Qt.Dense5Pattern)
qp.setBrush(brush)
qp.drawRect(130, 105, 90, 60)
brush = QBrush(Qt.Dense6Pattern)
qp.setBrush(brush)
qp.drawRect(250, 105, 90, 60)
brush = QBrush(Qt.HorPattern)
qp.setBrush(brush)
qp.drawRect(10, 195, 90, 60)
brush = QBrush(Qt.VerPattern)
qp.setBrush(brush)
qp.drawRect(130, 195, 90, 60)
brush = QBrush(Qt.BDiagPattern)
qp.setBrush(brush)
qp.drawRect(250, 195, 90, 60)
if __name__ == '__main__':
app = QApplication(sys.argv)
demo = QBrushDemo()
demo.show()
sys.exit(app.exec_())
三、绘制文字
QPainter.drawText
import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QPainter, QColor, QFont
from PyQt5.QtCore import Qt
class DrawTextDemo(QWidget):
def __init__(self, parent=None):
super(DrawTextDemo, self).__init__(parent)
self.setWindowTitle("绘画文字")
self.resize(500, 400)
self.text = '你好我是背景文字'
def paintEvent(self, event):
painter = QPainter(self)
painter.begin(self)
# 自定义的绘画方法
painter.setPen(QColor(220, 190, 255)) # 设置颜色
# 设置字体
painter.setFont(QFont('SimSun', 25))
# 画出文本
painter.drawText(event.rect(), Qt.AlignCenter, self.text)
painter.end()
if __name__ == "__main__":
app = QApplication(sys.argv)
demo = DrawTextDemo()
demo.show()
sys.exit(app.exec_())