Python 在PyQt5中的图像顶部绘制鼠标轨迹

Python 在PyQt5中的图像顶部绘制鼠标轨迹,python,python-3.x,pyqt,pyqt5,Python,Python 3.x,Pyqt,Pyqt5,我是PyQt5的新手。我试图在加载的图像上绘制跟踪我的鼠标的线条,即按下鼠标将绘制鼠标移动到的任何位置,而鼠标仍处于按下状态,并在释放鼠标时停止 我看到了,这非常有帮助,但我正在尝试做一些更复杂的事情 我想我把事情搞砸了 我写的内容(不起作用): 您想在mouseMoveEvent中使用drawine。当您移动鼠标时,它将调用mouseMoveEvent,从最后一个位置画一条线,然后它将自己调用paintEvent 试试这个: import sys from PyQt5.QtCore impor

我是PyQt5的新手。我试图在加载的图像上绘制跟踪我的鼠标的线条,即按下鼠标将绘制鼠标移动到的任何位置,而鼠标仍处于按下状态,并在释放鼠标时停止

我看到了,这非常有帮助,但我正在尝试做一些更复杂的事情

我想我把事情搞砸了

我写的内容(不起作用):


您想在
mouseMoveEvent
中使用
drawine
。当您移动鼠标时,它将调用
mouseMoveEvent
,从最后一个位置画一条线,然后它将自己调用
paintEvent

试试这个:

import sys
from PyQt5.QtCore import Qt, QPoint
from PyQt5.QtWidgets import QMainWindow, QApplication
from PyQt5.QtGui import QPixmap, QPainter, QPen


class Menu(QMainWindow):

    def __init__(self):
        super().__init__()
        self.drawing = False
        self.lastPoint = QPoint()
        self.image = QPixmap("picture.png")
        self.setGeometry(100, 100, 500, 300)
        self.resize(self.image.width(), self.image.height())
        self.show()

    def paintEvent(self, event):
        painter = QPainter(self)
        painter.drawPixmap(self.rect(), self.image)

    def mousePressEvent(self, event):
        if event.button() == Qt.LeftButton:
            self.drawing = True
            self.lastPoint = event.pos()

    def mouseMoveEvent(self, event):
        if event.buttons() and Qt.LeftButton and self.drawing:
            painter = QPainter(self.image)
            painter.setPen(QPen(Qt.red, 3, Qt.SolidLine))
            painter.drawLine(self.lastPoint, event.pos())
            self.lastPoint = event.pos()
            self.update()

    def mouseReleaseEvent(self, event):
        if event.button == Qt.LeftButton:
            self.drawing = False


if __name__ == '__main__':
    app = QApplication(sys.argv)
    mainMenu = Menu()
    sys.exit(app.exec_())

import sys
from PyQt5.QtCore import Qt, QPoint
from PyQt5.QtWidgets import QMainWindow, QApplication
from PyQt5.QtGui import QPixmap, QPainter, QPen


class Menu(QMainWindow):

    def __init__(self):
        super().__init__()
        self.drawing = False
        self.lastPoint = QPoint()
        self.image = QPixmap("picture.png")
        self.setGeometry(100, 100, 500, 300)
        self.resize(self.image.width(), self.image.height())
        self.show()

    def paintEvent(self, event):
        painter = QPainter(self)
        painter.drawPixmap(self.rect(), self.image)

    def mousePressEvent(self, event):
        if event.button() == Qt.LeftButton:
            self.drawing = True
            self.lastPoint = event.pos()

    def mouseMoveEvent(self, event):
        if event.buttons() and Qt.LeftButton and self.drawing:
            painter = QPainter(self.image)
            painter.setPen(QPen(Qt.red, 3, Qt.SolidLine))
            painter.drawLine(self.lastPoint, event.pos())
            self.lastPoint = event.pos()
            self.update()

    def mouseReleaseEvent(self, event):
        if event.button == Qt.LeftButton:
            self.drawing = False


if __name__ == '__main__':
    app = QApplication(sys.argv)
    mainMenu = Menu()
    sys.exit(app.exec_())