PyQt5基础学习-绘图应用 1.QPixmap(构造画板) 2.QPainter().drawLine(在画板上画出直线) 3.mousePressEvent(鼠标的按下事件) 4.mouseMoveEvent(鼠标移动事件) 5.mouseReleaseEvent(鼠标释放事件)
通过鼠标的点击,来获得直线的初始化位置, 通过鼠标的移动事件,获得当前的位置,获得完位置后进行绘图,同时再更新初始化的位置
Drawing.py
""" 项目实战: 实现绘图应用 需要解决3个核心内容 1.如何绘图 2.在哪里绘图 3.如果通过鼠标进行绘图 """ import sys from PyQt5.QtWidgets import QApplication, QWidget from PyQt5.QtGui import QPainter, QPixmap from PyQt5.QtCore import Qt, QPoint class Drawing(QWidget): def __init__(self): super(Drawing, self).__init__() self.setWindowTitle("绘图应用") self.pix = QPixmap() # 画布大小为400*400, 背景为白色 self.lastPoint = QPoint() self.endPoint = QPoint() self.initUI() def initUI(self): self.resize(600, 600) #画布大小为400*400, 背景为白色 self.pix = QPixmap(600, 600) self.pix.fill(Qt.white) #进行绘制操作 def paintEvent(self, event): pp = QPainter(self.pix) #根据鼠标指针前后两个位置绘制直线 pp.drawLine(self.lastPoint, self.endPoint) #让前一个坐标值等于后一个坐标值 self.lastPoint = self.endPoint #在画板上进行绘制操作 painter = QPainter(self) painter.drawPixmap(0, 0, self.pix) #当鼠标被第一次点击时, 记录开始的位置 def mousePressEvent(self, event): if event.button() == Qt.LeftButton: self.lastPoint = event.pos() #当鼠标移动时,开始改变最后的位置,且进行绘制操作 def mouseMoveEvent(self, event): if event.button and Qt.LeftButton: self.endPoint = event.pos() self.update() def mouseReleaseEvent(self, event): #鼠标左键释放,在进行最后一次绘制 if event.button() == Qt.LeftButton: self.endPoint = event.pos() #进行重新绘制 self.update() if __name__ == "__main__": app = QApplication(sys.argv) form = Drawing() form.show() sys.exit(app.exec_())
每天更新pyQt5内容