PyQt5 - API di disegno
Tutti i QWidgetle classi in PyQt sono sottoclasse dalla classe QPaintDevice. UNQPaintDeviceè un'astrazione di spazio bidimensionale che può essere disegnata usando un QPainter. Le dimensioni del dispositivo di pittura sono misurate in pixel a partire dall'angolo in alto a sinistra.
QPainterclass esegue la pittura di basso livello su widget e altri dispositivi verniciabili come la stampante. Normalmente, viene utilizzato nell'evento paint del widget. IlQPaintEvent si verifica ogni volta che l'aspetto del widget viene aggiornato.
Il pittore viene attivato chiamando il begin() metodo, mentre il end()metodo lo disattiva. Nel mezzo, il motivo desiderato viene dipinto con metodi adeguati come elencato nella tabella seguente.
Sr.No. | Metodi e descrizione |
---|---|
1 | begin() Inizia a dipingere sul dispositivo di destinazione |
2 | drawArc() Disegna un arco tra l'angolo iniziale e quello finale |
3 | drawEllipse() Disegna un'ellisse all'interno di un rettangolo |
4 | drawLine() Disegna una linea con le coordinate del punto finale specificate |
5 | drawPixmap() Estrae la pixmap dal file immagine e la visualizza nella posizione specificata |
6 | drwaPolygon() Disegna un poligono utilizzando un array di coordinate |
7 | drawRect() Disegna un rettangolo a partire dalla coordinata in alto a sinistra con la larghezza e l'altezza specificate |
8 | drawText() Visualizza il testo alle coordinate date |
9 | fillRect() Riempie il rettangolo con il parametro QColor |
10 | setBrush() Imposta uno stile di pennello per la pittura |
11 | setPen() Imposta il colore, le dimensioni e lo stile della penna da utilizzare per il disegno |
Esempio
Nel codice seguente vengono utilizzati vari metodi dei metodi di disegno di 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()
Il codice precedente produce il seguente output: