pyqt5在图元上画图_pyqt5——绘图

绘图

PyQt5绘图系统能渲染矢量图像、位图图像和轮廓字体文本。一般会使用在修改或者提高现有组件的功能,或者创建自己的组件。使用PyQt5的绘图API进行操作。

绘图由paintEvent()方法完成,绘图的代码要放在QPainter对象的begin()和end()方法之间。是低级接口。

文本涂鸦

我们从画一些Unicode文本开始。

#!/usr/bin/python3

# -*- coding: utf-8 -*-

"""

ZetCode PyQt5 tutorial

欢迎加入我的QQ群`923 414 804`与我一起学习

In this example, we draw text in Russian Cylliric.

Author: Jan Bodnar

Website: zetcode.com

Last edited: August 2017

"""

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()方法在窗口里绘制文本,rect()方法返回要更新的矩形区域。

程序展示:

image

点的绘画

点是最简单的绘画了。

#!/usr/bin/python3

# -*- coding: utf-8 -*-

"""

ZetCode PyQt5 tutorial

In the example, we draw randomly 1000 red points

on the window.

Author: Jan

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值