中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

PyQt5——窗口繪圖類控件

窗口繪圖類控件

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

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

QPainter

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

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

方法

方法  描述

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

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

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

drawLine(int x1,int y1,int x2,int y2)  繪制一條指定了端點(diǎn)坐標(biāo)的線。

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

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

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

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

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

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

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

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

枚舉類型  描述

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

Qt.SolidLine  一個(gè)簡(jiǎn)單的線

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

Qt.DotLine  由一些像素分割點(diǎn)

Qt.DashDotLine  輪流交替的點(diǎn)和短線

Qt.DashDotDotLine  一個(gè)短線、兩個(gè)點(diǎn)

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("在窗口中畫點(diǎn)")

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是一個(gè)基本的圖形對(duì)象,用于繪制直線、曲線或者輪廓畫出矩形、橢圓形、多邊形以及其他形狀。

# -*- 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ù)字列表的個(gè)數(shù)必須是偶數(shù),在本例中數(shù)字列表[1,4,5,4]它的個(gè)數(shù)是4,奇數(shù)位代表一段橫線,偶數(shù)為代表兩端橫線之間的空余距離。

QBrush

QBrush是一個(gè)基本的圖形對(duì)象,用于填充如矩形、橢圓形或多邊形等形狀。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è)備的圖像顯示,可以作為一個(gè)QPaintDevice對(duì)象,也可以加載到一個(gè)控件中,通常是標(biāo)簽或者按鈕,用于在標(biāo)簽或按鈕上顯示圖像。

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

常用的方法

方法  描述

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

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

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

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

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

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

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

標(biāo)題名稱:PyQt5——窗口繪圖類控件
文章轉(zhuǎn)載:http://www.rwnh.cn/article12/jipcgc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷推廣、網(wǎng)站營(yíng)銷外貿(mào)建站、靜態(tài)網(wǎng)站用戶體驗(yàn)、做網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
鄂托克前旗| 邹平县| 永修县| 周口市| 遂宁市| 上栗县| 广州市| 安徽省| 上虞市| 尉犁县| 荔波县| 朝阳县| 淳安县| 新沂市| 仙居县| 舟曲县| 龙口市| 行唐县| 左权县| 千阳县| 措美县| 云霄县| 永城市| 保靖县| 德令哈市| 永善县| 察哈| 扎兰屯市| 南漳县| 竹山县| 岳阳市| 嘉荫县| 庆阳市| 莲花县| 泰州市| 广昌县| 涪陵区| 五家渠市| 固原市| 丁青县| 崇仁县|