前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python pyqt5 QPainter 画图

python pyqt5 QPainter 画图

作者头像
用户5760343
发布2019-07-05 11:23:14
2K0
发布2019-07-05 11:23:14
举报
文章被收录于专栏:sktjsktj

方法

画文字

-- coding: utf-8 --

""" 【简介】 在窗体中绘画出文字的例子

"""

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

class Drawing(QWidget): def init(self, parent=None): super(Drawing, self).init(parent) self.setWindowTitle("在窗体中绘画出文字例子") self.resize(300, 200) self.text = '欢迎学习 PyQt5'

代码语言:javascript
复制
def paintEvent(self, event):
    painter = QPainter(self)
    painter.begin(self)
    # 自定义的绘画方法
    self.drawText(event, painter)
    painter.end()

def drawText(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_())

画点

-- coding: utf-8 --

""" 【简介】 在窗体中绘画点的例子

"""

import sys, math from PyQt5.QtWidgets import * from PyQt5.QtGui import * from PyQt5.QtCore import Qt

class Drawing(QWidget): def init(self, parent=None): super(Drawing, self).init(parent) self.resize(300, 200) self.setWindowTitle("在窗体中画点")

代码语言:javascript
复制
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):
        # [-100, 100]两个周期的正弦函数图像
        x = 100 * (-1 + 2.0 * i / 1000) + size.width() / 2.0
        y = -50 * math.sin((x - size.width() / 2.0) * math.pi / 50) + size.height() / 2.0
        qp.drawPoint(x, y)

if name == 'main': app = QApplication(sys.argv) demo = Drawing() demo.show() sys.exit(app.exec_())

Pen

-- coding: utf-8 --

""" 【简介】 绘图中QPen 的例子 ,绘制使用不同样式的6条线

"""

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()

代码语言:javascript
复制
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_())

brush

-- 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()

代码语言:javascript
复制
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_())

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.06.26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 方法
    • 画文字
    • -- coding: utf-8 --
    • 画点
    • -- coding: utf-8 --
    • Pen
    • -- coding: utf-8 --
    • brush
    • -- coding: utf-8 --
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档