入手pyqt没有几天,想把pyqt系类基础挨个实践一遍。 这一节是pyqt5的QPainter绘制基础图形。 开发环境:
代码语言:javascript复制 系统:Windows 64位
IDE:VS2017
Python:python3.6
pyqt:pyqt5.10.1
一些注意事项: QPainter基础流程为:
代码语言:javascript复制 def paintEvent(self, QPaintEvent):
painter = QPainter(self)
painter.setPen(QColor(166,66,250))
painter.begin(self)
painter.draw-----#绘制函数
painter.end()
界面刷新为:
代码语言:javascript复制self.update()
画笔设置:
代码语言:javascript复制painter.setPen(QColor(166,66,250))
画点:
代码语言:javascript复制painter.drawPoint(100,100)
画线:
代码语言:javascript复制painter.drawLine(100,100,200,200)
画圆:
代码语言:javascript复制painter.drawEllipse(150,150,100,100)
画矩形:
代码语言:javascript复制painter.drawRect(100,100,100,150)
画文本:
代码语言:javascript复制painter.drawText(120,120,"文字")
画多边形:
代码语言:javascript复制 polygon = QPolygon()
polygon.setPoints(5,100,100,140,130,160,160,170,140,140,178)
painter.drawPolygon(polygon)
画扇形:
代码语言:javascript复制painter.drawPie(100,100,200,200,0*16,120*16)
画弧形:
代码语言:javascript复制painter.drawArc(100,100,200,200,30*16,120*16)
画路径:
代码语言:javascript复制 path = QPainterPath()
path.addRect(100,100,100,100)
path.addEllipse(150,150,60,80)
painter.setBrush(Qt.blue)
#path.setFillRule(Qt.WindingFill) #非零填充规则
path.setFillRule(Qt.OddEvenFill) #奇偶填充规则
painter.drawPath(path)
下边是UI界面:
项目思路为: 点击对应按钮绘制特定图形。 下边为源码: 文件源码