Dibujando con un pincel

Necesito ayuda con la implementación del pincel en PyQt5. Ya tengo un código de evento para el mouse:

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

Dentro de la cual se declara la función de dibujo del pincel:

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)

Pero el problema principal es que esta función se declara en los eventos mismos. Por lo tanto, el dibujo se realiza de inmediato y no puedo agregar otras herramientas. Porque junto con ellos se dibujará constantemente el "lápiz". Pero necesito extraer de alguna manera la función desde allí y asignarla al botón correspondiente. Para incluir solo haciendo clic en este botón. Digamos que tengo una barra de herramientas:

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

Para lo cual hay una acción:

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

¿Cómo lo haría en el "triggered.connect", asigne la función de dibujo, y que funcione solo cuando se hace clic en el botón. Tal vez hay algunos vínculos para esto, como en tkinter, en la similitud:

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)

Y, al final, acabo de asignar esta función al botón, y todo funcionó bien

Estaré muy agradecido por las respuestas y especialmente por ejemplos de resolución de problemas o ejemplos de pinceles que no se declaran en los eventos

PD. Pido disculpas por mi inglés, si algo está mal с: