PyQt5绘图

QPainter

功能:QPainter实现在QWidget上画图功能

说明:绘图必须在paintEvent中完成,且要在bengin和end之间作图

接口:

方法 描述
begin 开始画图
end 结束画图
drawLine(int x1, int y1, int x2, int y2) 绘制直线从(x1,y1)到(x2,y2)
drawRect(int x, int y, int w, int h) 绘制矩形起始坐标(x,y),宽度w,高度h
drawText 绘制字符串
FillRect 使用颜色填充矩形
setBrush 设置画刷
setPen 设置画笔

QPen

功能:画笔,主要是设置线条的格式和颜色

QBrush

功能:画刷,主要是设置填充的格式和颜色

例子

import random
import string
import sys

from PyQt5.QtCore import Qt, QRect
from PyQt5.QtGui import QPainter, QFont, QColor, QPen, QBrush
from PyQt5.QtWidgets import QApplication, QWidget

class MyWidget(QWidget):
    def __init__(self):
        super(MyWidget, self).__init__()

    # def paintEvent(self, QPaintEvent):
    #     painter = QPainter(self)
    #     painter.begin(self)
    #     painter.setFont(QFont('Courier New', 20))
    #     painter.setPen(QColor(168, 34, 3))
    #     painter.drawText(QPaintEvent.rect(), Qt.AlignCenter, 'hello world')
    #     painter.end()

    # def paintEvent(self, QPaintEvent):
    #     painter = QPainter(self)
    #     painter.begin(self)
    #     painter.setFont(QFont('Courier New', 20))
    #     painter.setPen(QColor(168, 34, 3))
    #
    #     for i in range(10000):
    #             painter.drawPoint(random.randint(0, 300), random.randint(0, 300))
    #
    #     painter.end()

    # def paintEvent(self, QPaintEvent):
    #     painter = QPainter(self)
    #     painter.begin(self)
    #
    #     pen = QPen(Qt.red, 2, Qt.SolidLine)
    #     painter.setPen(pen)
    #     painter.drawLine(20, 20, 400, 20)
    #
    #     pen.setStyle(Qt.DashDotLine)
    #     painter.setPen(pen)
    #     painter.drawLine(20, 40, 400, 40)
    #
    #     painter.end()

    # def paintEvent(self, QPaintEvent):
    #     painter = QPainter(self)
    #     painter.begin(self)
    # 
    #     brush = QBrush(Qt.SolidPattern)
    #     brush.setColor(Qt.green)
    #     painter.setBrush(brush)
    #     painter.drawRect(20, 20, 200, 100)
    # 
    #     brush = QBrush(Qt.HorPattern)
    #     brush.setColor(Qt.red)
    #     painter.setBrush(brush)
    #     painter.drawRect(20, 140, 200, 100)
    # 
    #     painter.end()

    # 实现随机验证码
    def paintEvent(self, QPaintEvent):
        painter = QPainter(self)
        painter.begin(self)
        painter.setFont(QFont('Courier New', 50))
        randomString = "".join([random.choice(string.digits + string.ascii_letters) for i in range(10)])
        for i in range(len(randomString)):
            painter.setPen(QColor(random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)))
            painter.drawText(50 + i * 40, 150, randomString[i])

        for i in range(25000):
            painter.setPen(QColor(random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)))
            painter.drawPoint(random.randint(0, 500), random.randint(0, 300))

        painter.end()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = MyWidget()
    w.resize(500, 300)
    w.move(300, 300)
    w.setWindowTitle('Simple')
    w.show()
    sys.exit(app.exec_())

猜你喜欢

转载自www.cnblogs.com/chusiyong/p/12926131.html