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 -