PyQt5 绘画API
所有的 QWidget 类都是从 QPaintDevice 类继承而来的。QPaintDevice 是一个抽象的二维空间,可以使用 QPainter 进行绘画。绘画设备的尺寸以像素为单位,从左上角开始计算。
QPainter 类在小部件及其他可绘画设备(如打印机)上执行低级别绘画。通常,它在小部件的绘画事件中使用。QPaintEvent 在小部件的外观更新时发生。
通过调用 begin() 方法来激活画家,而调用 end() 方法来停止激活。在两者之间,可以使用下表中列出的适当方法绘制所需的图案。
序号 | 方法和描述 |
---|---|
1 | begin() 在目标设备上开始绘画 |
2 | drawArc() 在起始角度和结束角度之间绘制弧形 |
3 | drawEllipse() 在矩形内部绘制椭圆 |
4 | drawLine() 绘制从起点坐标到终点坐标的线条 |
5 | drawPixmap() 从图像文件中提取像素图,并在指定位置显示它 |
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()
上面的代码会产生以下输出−