Попробуй:

ужна помощь с реализацией кисти на PyQt5 У меня уже есть код события для мыши:

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

def mouseMoveEvent(self, event):
    if (event.buttons() & Qt.LeftButton) and self.scribbling:
        self.drawLineTo(event.pos())


def mouseReleaseEvent(self, event):
    if event.button() == Qt.LeftButton and self.scribbling:
        self.drawLineTo(event.pos())
        self.scribbling = False

Внутри которого объявлена ​​функция рисования кистью:

def drawLineTo(self, endPoint):
    painter = QPainter(self.image)
    painter.setPen(QPen(self.myPenColor, self.myPenWidth, Qt.SolidLine,
            Qt.RoundCap, Qt.RoundJoin))
    painter.drawLine(self.lastPoint, endPoint)
    self.modified = True

    rad = self.myPenWidth / 2 + 2
    self.update(QRect(self.lastPoint, endPoint).normalized().adjusted(-rad, -rad, +rad, +rad))
    self.lastPoint = QPoint(endPoint)

Но главная проблема в том, что эта функция объявлена ​​в самих событиях. Поэтому рисование идет сразу, и я не могу добавить другие инструменты. Потому что вместе с ними «карандаш» будет постоянно рисоваться. Но мне нужно как-то вытащить оттуда функцию и назначить ее соответствующей кнопке. Чтобы включить только нажав на эту кнопку. Допустим, у меня есть некоторая панель инструментов:

toolbar = self.addToolBar('Инструменты')
toolbar.addAction(self.pen)

Для которого есть действие:

self.pen = QAction(QIcon('Image/pen.png'), 'Pencil', self)
self.pen.triggered.connect(self.      )

Как бы мне это сделать в «triggered.connect» назначить функцию рисования, и чтобы она работала только при нажатии кнопки. Может быть, есть некоторые связи для этого, как в tkinter, в сходстве:

def draw_pen(self):
    self.parent.config(cursor="arrow")
    self.parent.unbind("<Button-1>")
    self.parent.unbind("<Motion>")
    self.parent.bind("<ButtonPress-1>", self.button_press)
    self.parent.bind('<B1-Motion>', self.draw_pencil_move)
    self.parent.bind('<ButtonRelease-1>', self.draw_pencil_release)

И, в конце концов, я просто назначил эту функцию на кнопку, и все работало нормально

Я буду очень благодарен за ответы и особенно за примеры решения проблем или примеры кистей, которые не объявлены в событиях

Постскриптум Я прошу прощения за мой английский, если что-то не так с:

Ответы на вопрос(1)

Ваш ответ на вопрос