PyQt5 - Zeichnungs-API
All die QWidgetKlassen in PyQt werden von der QPaintDevice-Klasse unterklassifiziert. EINQPaintDeviceist eine Abstraktion des zweidimensionalen Raums, auf die mit einem QPainter zurückgegriffen werden kann. Die Abmessungen des Malgeräts werden in Pixeln gemessen, beginnend in der oberen linken Ecke.
QPainterDie Klasse malt auf niedriger Ebene mit Widgets und anderen überstreichbaren Geräten wie dem Drucker. Normalerweise wird es im Malereignis des Widgets verwendet. DasQPaintEvent tritt immer dann auf, wenn das Erscheinungsbild des Widgets aktualisiert wird.
Der Maler wird durch Aufrufen des aktiviert begin() Methode, während die end()Methode deaktiviert es. Dazwischen wird das gewünschte Muster mit geeigneten Methoden gemalt, wie in der folgenden Tabelle aufgeführt.
Sr.Nr. | Methoden & Beschreibung |
---|---|
1 |
begin() Startet das Malen auf dem Zielgerät |
2 |
drawArc() Zeichnet einen Bogen zwischen dem Start- und dem Endwinkel |
3 |
drawEllipse() Zeichnet eine Ellipse innerhalb eines Rechtecks |
4 |
drawLine() Zeichnet eine Linie mit den angegebenen Endpunktkoordinaten |
5 |
drawPixmap() Extrahiert die Pixmap aus der Bilddatei und zeigt sie an der angegebenen Position an |
6 |
drwaPolygon() Zeichnet ein Polygon mit einem Koordinatenarray |
7 |
drawRect() Zeichnet ein Rechteck, das an der oberen linken Koordinate mit der angegebenen Breite und Höhe beginnt |
8 |
drawText() Zeigt den Text an den angegebenen Koordinaten an |
9 |
fillRect() Füllt das Rechteck mit dem Parameter QColor |
10 |
setBrush() Legt einen Pinselstil zum Malen fest |
11 |
setPen() Legt die Farbe, Größe und den Stil des Stifts fest, der zum Zeichnen verwendet werden soll |
Beispiel
Im folgenden Code werden verschiedene Methoden der Zeichenmethoden von PyQt verwendet.
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()
Der obige Code erzeugt die folgende Ausgabe -