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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM