一、QPainter
經常使用方法python
方法 | 描述 |
---|---|
begin() | 開始在目標設備上繪製 |
drawArc() | 在起始角度和最終角度之間畫弧 |
drawEliipse() | 在一個矩形內畫一個橢圓 |
drawLine(int x1,int y1,int x2,int y2) | 繪製一條指定了端點座標的直線,而且指定當前畫筆位置爲(x2,y2) |
drawPixmap() | 從圖像文件中提取 Pixmap 並將其顯示在指定位置 |
drawPolygon() | 使用座標數組繪製多邊形 |
drawRect(int x,int y,int w,int h) | 以給定的寬度和高度從左上角座標(x,y)開始繪製一個矩形 |
drawText() | 顯示給定座標處的文字 |
fillRext() | 使用 QColor 參數填充矩形 |
setBrush() | 設置畫筆風格 |
setPen() | 設置用於繪製的筆的顏色、大小和樣式 |
setpen可選參數數組
參數 | 描述 |
---|---|
Qt.NoPen | 沒有線 |
Qt.SolidLine | 一條簡單的線 |
Qt.DashLine | 由一些像素分隔的短線 |
Qt.DotLine | 由一些像素分隔得點 |
Qt.DashDotLine | 輪流交替的點和短線 |
Qt.DashDotDotLine | 一條短線、兩個點 |
Qt.MPenStyle | 畫筆風格的掩碼 |
#!/usr/bin/env python3 # -*- coding: utf-8 -*- # @Author: yudengwu # @Date : 2020/8/20 import sys from 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):
app
繪製點線機器學習
#!/usr/bin/env python3 # -*- coding: utf-8 -*- # @Author: yudengwu # @Date : 2020/8/20 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("在窗口中畫點") 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.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) win = Drawing() win.show() sys.exit(app.exec_())
二、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_())
三、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_())
四、QPixmap
QPixmap 類用於繪圖設備的圖像顯示,可做爲一個 QPaintDevice 對象,也能夠加載到一個控件中。
QPixmap 能夠讀取的圖像文件類型有:BMP、GIF、JPG、JPEG、PNG、PBM、PGM、PPM、XBM、XPM 等。
QPixmap 類的經常使用方法以下:
字體
方法 | 描述 |
---|---|
copy() | 從 QRect 對象複製到 QPixmap 對象 |
fromIamge() | 將 QImage 對象轉換爲 QPixmap 對象 |
grabWidget() | 從給定的窗口小控件建立一個像素圖 |
grabWindow() | 在窗口中建立數據的像素圖 |
load() | 加載圖像文件做爲 QPixmap 對象 |
save() | 將 QPixmap 對象保存爲文件 |
toImage() | 將 QPixmap 對象轉換爲 QImage 對象 |
# -*- coding: utf-8 -*- ''' 【簡介】 PyQt5中 QPixmap 例子 ''' import sys from 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快速開發與實戰》
我只是記錄下有用的信息,方便之後複習查找。
否則學的東西又忘啦。
ui
電氣專業的計算機萌新,寫博文不容易。若是你以爲本文對你有用,請點個贊支持下,謝謝。
spa