200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > pyqt5讲解5:窗口绘图类控件QPainter QPen QBrush QPixmap

pyqt5讲解5:窗口绘图类控件QPainter QPen QBrush QPixmap

时间:2022-06-07 06:52:11

相关推荐

pyqt5讲解5:窗口绘图类控件QPainter QPen QBrush QPixmap

1、QPainter

常用方法

setpen可选参数

#!/usr/bin/env python3# -*- coding: utf-8 -*-# @Author: yudengwu# @Date : /8/20import sysfrom PyQt5.QtWidgets import *from PyQt5.QtGui import *from PyQt5.QtCore import *class Drawing(QWidget):def __init__(self, parent=None):super(Drawing, self).__init__(parent)self.setWindowTitle("在窗口中绘制文字")self.setWindowIcon(QIcon("head.png"))self.resize(300, 200)self.text = "你好呀,总裁余"def paintEvent(self, event):painter = QPainter()painter.begin(self)# 自定义绘制方法self.draw_text(event, painter)painter.end()def draw_text(self, event, qp):# 设置画笔颜色qp.setPen(QColor(168, 34, 3))# 设置字体qp.setFont(QFont('SimSun', 20))# 绘制文字qp.drawText(event.rect(), Qt.AlignCenter, self.text)if __name__ == "__main__":app = QApplication(sys.argv)demo = Drawing()demo.show()sys.exit(app.exec_())

解释:

首先定义文字

self.text = “你好呀,总裁余”

定义绘制事件

def paintEvent(self, event):

自定义绘制方法

def draw_text(self, event, qp):

绘制点线

#!/usr/bin/env python3# -*- coding: utf-8 -*-# @Author: yudengwu# @Date : /8/20import sys, mathfrom PyQt5.QtWidgets import *from PyQt5.QtGui import *from PyQt5.QtCore import Qtclass Drawing(QWidget):def __init__(self, parent=None):super(Drawing, self).__init__(parent)self.resize(300, 200)self.setWindowTitle("在窗口中画点")self.setWindowIcon(QIcon("limi.jpg"))def paintEvent(self, event):# 初始化绘图工具qp = QPainter()qp.begin(self)# 自定义画点方法self.drawPoints(qp)qp.end()def drawPoints(self, qp):qp.setPen(Qt.red)size = self.size()#判断当前窗口大小for i in range(1000):# 绘制正弦图形,周期 [-1000,1000]x = 100 * (- 1 + 2.0 * i / 1000) + size.width() / 2.0y = -50 * math.sin((x - size.width() / 2.0) * math.pi / 50) + size.height() / 2.0qp.drawPoint(x, y)if __name__ == "__main__":app = QApplication(sys.argv)win = Drawing()win.show()sys.exit(app.exec_())

2、QPen

QPen(钢笔)是基本图形对象,用于绘制直线、曲线或者给轮廓画出矩形、椭圆形、多边形以及其他形状等

import sys from PyQt5.QtWidgets import * from PyQt5.QtGui import *from PyQt5.QtCore import Qt class Drawing(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.black, 2, 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 = Drawing()demo.show()sys.exit(app.exec_())

3、QBrush

QBrush(画刷),用于填充如矩形、椭圆形或多边形等形状。

QBrush 有三种类型:预定义、过渡和纹理图案。

# -*- coding: utf-8 -*-"""【简介】绘图中QBrush 的例子 ,绘制九个不同样式的矩形。"""import sys from PyQt5.QtWidgets import * from PyQt5.QtGui import *from PyQt5.QtCore import Qt class Drawing(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)qp.setBrush(brush)qp.drawRect(10, 15, 90, 60)brush = QBrush(Qt.Dense1Pattern)qp.setBrush(brush)qp.drawRect(130, 15, 90, 60)brush = QBrush(Qt.Dense2Pattern)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 = Drawing()demo.show()sys.exit(app.exec_())

4、QPixmap

QPixmap 类用于绘图设备的图像显示,可作为一个 QPaintDevice 对象,也可以加载到一个控件中。

QPixmap 可以读取的图像文件类型有:BMP、GIF、JPG、JPEG、PNG、PBM、PGM、PPM、XBM、XPM 等。

QPixmap 类的常用方法如下:

# -*- coding: utf-8 -*-'''【简介】PyQt5中 QPixmap 例子'''import sysfrom PyQt5.QtCore import *from PyQt5.QtGui import *from PyQt5.QtWidgets import *if __name__ == '__main__':app = QApplication(sys.argv)win = QWidget()lab1 = QLabel()lab1.setPixmap(QPixmap("D:\机器学习\学习草稿\duoren.jpg"))vbox=QVBoxLayout()vbox.addWidget(lab1)win.setLayout(vbox)win.setWindowTitle("QPixmap 例子")win.show()sys.exit(app.exec_())

这篇博文内容来源于书籍《pyqt5快速开发与实战》

我只是记录下有用的信息,方便以后复习查找。

不然学的东西又忘啦。

电气专业的计算机萌新,写博文不容易。如果你觉得本文对你有用,请点个赞支持下,谢谢。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。