真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

PyQt5——窗口繪圖類控件

窗口繪圖類控件

創(chuàng)新互聯(lián)公司為企業(yè)級客戶提高一站式互聯(lián)網(wǎng)+設(shè)計服務(wù),主要包括成都網(wǎng)站設(shè)計、成都做網(wǎng)站、app軟件定制開發(fā)、小程序設(shè)計、宣傳片制作、LOGO設(shè)計等,幫助客戶快速提升營銷能力和企業(yè)形象,創(chuàng)新互聯(lián)各部門都有經(jīng)驗豐富的經(jīng)驗,可以確保每一個作品的質(zhì)量和創(chuàng)作周期,同時每年都有很多新員工加入,為我們帶來大量新的創(chuàng)意。 

在PyQt5中,一般可以通過QPainter、QPen和QBrush這三個類來實現(xiàn)繪圖的功能。

QPainter

QPainter類在QWidget上執(zhí)行繪圖操作,它是一個繪制工具,為大部分圖形界面提供了高度優(yōu)化的函數(shù),是QPainter類可以繪制從簡單的直線到復(fù)雜的餅圖。

繪制操作在QWidget.painEvent()中完成,繪制方法必須放在QtGui.QPainter對象的begin()和end()之間。QPainter類在控件或其他繪圖設(shè)備上執(zhí)行較低級別的圖形繪制功能。

方法

方法  描述

begin()  開始在目標設(shè)備上繪制

drawArc()  在起始角度和最終角度之間畫弧

drawEllipse()  在一個矩形內(nèi)畫一個橢圓

drawLine(int x1,int y1,int x2,int y2)  繪制一條指定了端點坐標的線。

drawPixmap()  從圖像文件中提取Pixmap并將其顯示在指定的位置

drawPolygon()  使用坐標數(shù)組繪制多邊形

drawReact()  給定寬度w和高度h從左上角(x,y)繪制一個矩形

drawText()  顯示給定坐標處的文字

fillRect()  使用QColor參數(shù)填充矩形

setBrush()  設(shè)置畫筆風(fēng)格

setPen()  設(shè)置用于繪制的筆的顏色、大小和樣式

還可以設(shè)置畫筆風(fēng)格(PenStyle),這是一個枚舉類,可以由QPainter類繪制。

枚舉類型  描述

Qt.NoPen  沒有線,比如QPainter.drawRect()填充,但沒有繪制任何邊界線

Qt.SolidLine  一個簡單的線

Qt.DashLine  由一些像素分隔的短線

Qt.DotLine  由一些像素分割點

Qt.DashDotLine  輪流交替的點和短線

Qt.DashDotDotLine  一個短線、兩個點

Qt.MPenStyle  畫筆風(fēng)格的掩碼

# -*- 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 = '歡迎學(xué)習(xí) PyQt5'

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 *

class Drawing(QWidget):

def __init__(self, parent = None):

super(Drawing, self).__init__(parent)

self.resize(300,200)

self.setWindowTitle("在窗口中畫點")

def paintEvent(self, event):

qp = QPainter(self)

qp.begin(self)

self.drawPoints(qp)

qp.end()

def drawPoints(self,qp):

qp.setPen(Qt.red)

size = self.size()

for i in range(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)

demo = Drawing()

demo.show()

sys.exit(app.exec_())

QPen

QPen是一個基本的圖形對象,用于繪制直線、曲線或者輪廓畫出矩形、橢圓形、多邊形以及其他形狀。

# -*- coding: utf-8 -*-

import sys

from PyQt5.QtWidgets import *

from PyQt5.QtGui import *

from PyQt5.QtCore import *

class Drawing(QWidget):

def __init__(self):

super().__init__()

self.initUI()

def initUI(self):

self.setGeometry(300,300,280,270)

self.setWindowTitle("鋼筆樣式例子")

def paintEvent(self, QPaintEvent):

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

使用Qt.CustomDashLine創(chuàng)建線條樣式,然后調(diào)用setDashPattern()方法使用數(shù)字列表定義樣式,數(shù)字列表的個數(shù)必須是偶數(shù),在本例中數(shù)字列表[1,4,5,4]它的個數(shù)是4,奇數(shù)位代表一段橫線,偶數(shù)為代表兩端橫線之間的空余距離。

QBrush

QBrush是一個基本的圖形對象,用于填充如矩形、橢圓形或多邊形等形狀。QBrush有三種類型:預(yù)定義、過渡和紋理圖案。 無錫看婦科的醫(yī)院 http://www.ytsgfk120.com/

# -*- coding: utf-8 -*-

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, QPaintEvent):

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類用于繪圖設(shè)備的圖像顯示,可以作為一個QPaintDevice對象,也可以加載到一個控件中,通常是標簽或者按鈕,用于在標簽或按鈕上顯示圖像。

QPixmap可以讀取的圖像文件類型有BMP、GIF、JPG、JPEG、PNG、PBM、PGM、PPM、XBM、XPM等。

常用的方法

方法  描述

copy()  從QRect對象復(fù)制到QPixmap對象

fromImage()  將QImage對象轉(zhuǎn)換為QPixmap對象

gradWidget()  從給定的窗口小控件創(chuàng)建一個像素圖

load()  加載圖像文件作為QPixmap對象

save()  將QPixmap對象保存為文件

toImage()  將QPixmap對象轉(zhuǎn)換為QImage對象

# -*- coding: utf-8 -*-

import sys

from PyQt5.QtCore import *

from PyQt5.QtGui import *

from PyQt5.QtWidgets import *

if __name__ == '__main__':

app = QApplication(sys.argv)

win = QWidget()

labl = QLabel()

labl.setPixmap(QPixmap("./images/python.jpg"))

vbox = QVBoxLayout()

vbox.addWidget(labl)

win.setLayout(vbox)

win.setWindowTitle("QPixmap例子")

win.show()

sys.exit(app.exec_())


分享文章:PyQt5——窗口繪圖類控件
網(wǎng)站URL:http://weahome.cn/article/jipcgc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部