绘图
PyQt5绘图系统能渲染矢量图像、位图图像和轮廓字体文本。一般会使 用在修改或者提高现有组件的功能,或者创建自己的组件。使用PyQt5 的绘图API进行操作
绘图由 paintEvent() 方法完成,绘图的代码要放在 QPainter 对象 的 begin() 和 end() 方法之间。是低级接口
一、文本涂鸦
从画一些Unicode文本开始,写了一些文本上下居中对齐的俄罗斯Cylliric语言的文字
代码实现:
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):
# QPainter 是低级的绘画类
qp = QPainter()
# 所有的绘画动作都在这个类
# 的 begin() 和 end() 方法之间完成
qp.begin(self)
# 绘画动作都封装 在 drawText() 内部
self.drawText(event, qp)
qp.end()
def drawText(self, event, qp):
# 为文字绘画定义了笔和字体
qp.setPen(QColor(168, 34, 3))
qp.setFont(QFont('Decorative', 10))
# drawText() 方法在窗口里绘制文本,
# rect() 方法返回要更新的矩形 区域
qp.drawText(event.rect(), Qt.AlignCenter, self.text)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
程序预览:

二、点的绘画
点是最简单的绘画了,例子中在窗口里随机的画出了1000个点
代码实现:
from PyQt5.QtWidgets import QWidget, QApplication
from PyQt5.QtGui import QPainter
from PyQt5.QtCore import Qt
import sys, random
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(300, 300, 300, 190)
self.setWindowTitle('Points')
self.show()
def paintEvent(self, e):
qp = QPainter()
qp.begin(self)
self.d

最低0.47元/天 解锁文章
3981

被折叠的 条评论
为什么被折叠?



