PyQt5 - API rysowania

Wszystkie QWidgetklasy w PyQt są podklasy z klasy QPaintDevice. ZAQPaintDevicejest abstrakcją dwuwymiarowej przestrzeni, którą można narysować za pomocą QPaintera. Wymiary urządzenia malującego są mierzone w pikselach, zaczynając od lewego górnego rogu.

QPainterclass wykonuje malowanie niskiego poziomu na widżetach i innych urządzeniach do malowania, takich jak drukarka. Zwykle jest używany w zdarzeniu rysowania widgetu. PlikQPaintEvent występuje po zaktualizowaniu wyglądu widżetu.

Malarz jest aktywowany przez wywołanie begin() metoda, podczas gdy end()metoda dezaktywuje go. W międzyczasie żądany wzór jest malowany odpowiednimi metodami, wymienionymi w poniższej tabeli.

Sr.No. Metody i opis
1

begin()

Rozpoczyna malowanie na urządzeniu docelowym

2

drawArc()

Rysuje łuk między kątem początkowym i końcowym

3

drawEllipse()

Rysuje elipsę wewnątrz prostokąta

4

drawLine()

Rysuje linię z określonymi współrzędnymi punktu końcowego

5

drawPixmap()

Wyodrębnia piksmapę z pliku obrazu i wyświetla ją w określonej pozycji

6

drwaPolygon()

Rysuje wielokąt przy użyciu tablicy współrzędnych

7

drawRect()

Rysuje prostokąt zaczynając od współrzędnej w lewym górnym rogu o podanej szerokości i wysokości

8

drawText()

Wyświetla tekst o podanych współrzędnych

9

fillRect()

Wypełnia prostokąt parametrem QColor

10

setBrush()

Ustawia styl pędzla do malowania

11

setPen()

Ustawia kolor, rozmiar i styl pióra używanego do rysowania

Przykład

W poniższym kodzie zastosowano różne metody metod rysowania PyQt.

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

class Example(QWidget):
   def __init__(self):
      super(Example, self).__init__()
      self.initUI()

   def initUI(self):
      self.text = "hello world"
      self.setGeometry(100,100, 400,300)
      self.setWindowTitle('Draw Demo')
      self.show()

   def paintEvent(self, event):
      qp = QPainter()
      qp.begin(self)
      qp.setPen(QColor(Qt.red))
      qp.setFont(QFont('Arial', 20))
      qp.drawText(10,50, "hello Python")
      qp.setPen(QColor(Qt.blue))
      qp.drawLine(10,100,100,100)
      qp.drawRect(10,150,150,100)
      qp.setPen(QColor(Qt.yellow))
      qp.drawEllipse(100,50,100,50)
      qp.drawPixmap(220,10,QPixmap("pythonlogo.png"))
      qp.fillRect(20,175,130,70,QBrush(Qt.SolidPattern))
      qp.end()

def main():
   app = QApplication(sys.argv)
   ex = Example()
   sys.exit(app.exec_())

if __name__ == '__main__':
   main()

Powyższy kod daje następujące dane wyjściowe -