【第十一章】Painting in PyQt5(绘画)

本文详细介绍了PyQt5的绘画系统,包括QPainter的使用,通过paintEvent()方法进行绘画,以及如何绘制文本、点、颜色、线条、曲线和贝塞尔曲线。还讲解了QPen和QBrush的运用,用于定义线条样式和形状填充。
摘要由CSDN通过智能技术生成

PyQt5绘画系统能够渲染矢量图形、图像和轮廓基于字体的文本。

当我们在应用程序中想要改变或是提高现存的部件或者如果我们要创建一个自定义的部件时往往需要用到绘画。为了使用绘画我们可以使用PyQt5提供的绘画API。

QPainter

QPainter对小部件和其他绘图设备执行低级别的绘制,它可以绘制从简单线条到复杂形状的所有内容。

The paintEvent method

通过使用paintEvent()方法进行绘画。绘制代码放在QPainter对象的begin()和end()方法之间,它在小部件和其他绘图设备上执行低级别的绘制。

Drawing text

以下示例中, 我们首先在窗口的客户区域上绘制一些Unicode文本。

import sys
from PyQt5.QtWidgets import QWidget, QApplication
from PyQt5.QtGui import QPainter, QColor, QFont
from PyQt5.QtCore import Qt


class Example(QWidget):

    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):

        self.text = 'Лев Николаевич Толстой\nАнна Каренина'

        self.setGeometry(300, 300, 280, 170)
        self.setWindowTitle('Drawing text')
        self.show()

    def paintEvent(self, event):

        qp = QPainter()
        qp.begin(self)
        self.drawText(event, qp)
        qp.end()

    def drawText(self, event, qp):

        qp.setPen(QColor(168, 34, 3))
        qp.setFont(QFont('Decorative', 10))
        qp.drawText(event.rect(), Qt.AlignCenter, self.text)


if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

以上示例中,我们在Cylliric中绘制一些文本,文本垂直和水平对齐。

def paintEvent(self, event):
...

绘图在绘画事件中完成。

qp = QPainter()
qp.begin(self)
self.drawText(event, qp)
qp.end()

QPainter类负责所有低级绘画,所有绘制方法都在begin()和end()之间进行,实际绘画被委托给drawText()方法。

qp.setPen(QColor(168, 34, 3))
qp.setFont(QFont('Decorative', 10))

这里我们定义了用于绘制文本的笔和字体。

qp.drawText(event.rect(), Qt.AlignCenter, self.text)

通过drawText()方法在窗口上绘制文本,paint事件的rect()方法返回需要更新的矩形。使用Qt.AlignCenter在两个维度上进行文本对齐。

Dr

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值