PyQt5 - API vẽ

Tất cả QWidgetcác lớp trong PyQt được phân lớp con từ lớp QPaintDevice. AQPaintDevicelà một phần trừu tượng của không gian hai chiều có thể được vẽ bằng cách sử dụng QPainter. Kích thước của thiết bị sơn được đo bằng pixel bắt đầu từ góc trên bên trái.

QPainterlớp thực hiện sơn ở mức độ thấp trên các vật dụng và các thiết bị có thể sơn khác như máy in. Thông thường, nó được sử dụng trong sự kiện sơn của widget. CácQPaintEvent xảy ra bất cứ khi nào giao diện của tiện ích con được cập nhật.

Họa sĩ được kích hoạt bằng cách gọi begin() phương pháp, trong khi end()phương pháp hủy kích hoạt nó. Ở giữa, mẫu mong muốn được sơn bằng các phương pháp thích hợp như được liệt kê trong bảng sau.

Sr.No. Phương pháp & Mô tả
1

begin()

Bắt đầu vẽ trên thiết bị mục tiêu

2

drawArc()

Vẽ một vòng cung giữa góc bắt đầu và góc kết thúc

3

drawEllipse()

Vẽ một hình elip bên trong một hình chữ nhật

4

drawLine()

Vẽ một đường với tọa độ điểm cuối được chỉ định

5

drawPixmap()

Trích xuất pixmap từ tệp hình ảnh và hiển thị nó ở vị trí được chỉ định

6

drwaPolygon()

Vẽ một đa giác bằng cách sử dụng một mảng tọa độ

7

drawRect()

Vẽ một hình chữ nhật bắt đầu từ tọa độ trên cùng bên trái với chiều rộng và chiều cao đã cho

số 8

drawText()

Hiển thị văn bản tại các tọa độ đã cho

9

fillRect()

Điền vào hình chữ nhật bằng thông số QColor

10

setBrush()

Đặt kiểu cọ vẽ cho bức tranh

11

setPen()

Đặt màu sắc, kích thước và kiểu bút được sử dụng để vẽ

Thí dụ

Trong đoạn mã sau, các phương pháp vẽ khác nhau của PyQt được sử dụng.

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()

Đoạn mã trên tạo ra kết quả sau: