成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

PyQt5——窗口繪圖類控件-創(chuàng)新互聯(lián)

  窗口繪圖類控件

成都創(chuàng)新互聯(lián)公司專注于常州企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城開(kāi)發(fā)。常州網(wǎng)站建設(shè)公司,為常州等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站設(shè)計(jì),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)

  在PyQt5中,一般可以通過(guò)QPainter、QPen和QBrush這三個(gè)類來(lái)實(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()  開(kāi)始在目標(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  沒(méi)有線,比如QPainter.drawRect()填充,但沒(méi)有繪制任何邊界線

  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ù)定義、過(guò)渡和紋理圖案。 無(wú)錫看婦科的醫(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_())

網(wǎng)頁(yè)名稱:PyQt5——窗口繪圖類控件-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)地址:http://jinyejixie.com/article44/jiphe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷推廣、網(wǎng)站改版、商城網(wǎng)站網(wǎng)站設(shè)計(jì)公司、網(wǎng)站排名企業(yè)網(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í)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)
南宁市| 江津市| 仙居县| 新河县| 陇南市| 鹤壁市| 五家渠市| 乾安县| 高平市| 中西区| 泊头市| 冕宁县| 萝北县| 泽普县| 宜都市| 东至县| 云南省| 阜宁县| 永善县| 康平县| 巨野县| 马边| 建阳市| 玛沁县| 宁海县| 甘谷县| 时尚| 榆社县| 平定县| 密山市| 广平县| 班玛县| 台南市| 思南县| 武隆县| 汤阴县| 西丰县| 威信县| 石首市| 吉林省| 温泉县|