PyQt5 – 绘图API
PyQt中所有的QWidget类都来自于QPaintDevice类的子类。QPaintDevice是一个二维空间的抽象,可以使用QPainter来绘制。绘画设备的尺寸以像素为单位,从左上角开始测量。
QPainter类在widget和其他可绘画的设备上执行低级别的绘画,比如打印机。通常情况下,它被用在widget的paint事件中。每当widget的外观被更新时,QPaintEvent就会发生。
通过调用begin()方法激活绘制器,而end()方法则停用它。在这之间,所需的图案是由下表所列的合适的方法绘制的。
Sr.No. | 方法和描述 |
---|---|
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()
上述代码产生了以下输出 –