PyQt5 - Drawing API
ทั้งหมด QWidgetคลาสใน PyQt เป็นคลาสย่อยจากคลาส QPaintDevice กQPaintDeviceเป็นนามธรรมของพื้นที่สองมิติที่สามารถวาดโดยใช้ QPainter ขนาดของอุปกรณ์พ่นสีวัดเป็นพิกเซลโดยเริ่มจากมุมซ้ายบน
QPainterคลาสทำการวาดภาพระดับต่ำบนวิดเจ็ตและอุปกรณ์ที่ทาสีอื่น ๆ เช่นเครื่องพิมพ์ โดยปกติจะใช้ในเหตุการณ์สีของวิดเจ็ต QPaintEvent เกิดขึ้นเมื่อใดก็ตามที่มีการอัปเดตลักษณะของวิดเจ็ต
จิตรกรเปิดใช้งานโดยเรียกไฟล์ begin() วิธีการในขณะที่ end()วิธีการปิดใช้งาน ระหว่างนั้นลวดลายที่ต้องการจะถูกวาดด้วยวิธีการที่เหมาะสมดังแสดงในตารางต่อไปนี้
ซีเนียร์ | วิธีการและคำอธิบาย |
---|---|
1 | begin() เริ่มวาดภาพบนอุปกรณ์เป้าหมาย |
2 | drawArc() วาดส่วนโค้งระหว่างมุมเริ่มต้นและมุมสิ้นสุด |
3 | drawEllipse() วาดวงรีภายในสี่เหลี่ยมผืนผ้า |
4 | drawLine() วาดเส้นพร้อมระบุพิกัดปลายทาง |
5 | drawPixmap() แยก pixmap ออกจากไฟล์รูปภาพและแสดงในตำแหน่งที่ระบุ |
6 | drwaPolygon() วาดรูปหลายเหลี่ยมโดยใช้พิกัดอาร์เรย์ |
7 | drawRect() วาดรูปสี่เหลี่ยมผืนผ้าเริ่มต้นที่พิกัดด้านซ้ายบนพร้อมกับความกว้างและความสูงที่กำหนด |
8 | drawText() แสดงข้อความตามพิกัดที่กำหนด |
9 | fillRect() เติมสี่เหลี่ยมด้วยพารามิเตอร์ QColor |
10 | setBrush() กำหนดรูปแบบแปรงสำหรับการวาดภาพ |
11 | setPen() กำหนดสีขนาดและรูปแบบของปากกาที่จะใช้สำหรับการวาดภาพ |
ตัวอย่าง
ในโค้ดต่อไปนี้จะใช้วิธีการวาดรูปแบบต่างๆของ 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()
รหัสด้านบนสร้างผลลัพธ์ต่อไปนี้ -