Desenhando com um pincel

Preciso de ajuda com a implementação do pincel no PyQt5. Já tenho algum código de evento para o 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 do qual a função de desenho do pincel é declarada:

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)

Mas o principal problema é que essa função é declarada nos próprios eventos. Portanto, o desenho ocorre imediatamente e não posso adicionar outras ferramentas. Porque junto com eles o "lápis" será constantemente desenhado. Mas, de alguma forma, preciso retirar a função de lá e atribuí-la ao botão correspondente. Para incluir apenas clicando neste botão. Digamos que eu tenha uma barra de ferramentas:

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

Para o qual existe uma ação:

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

Como eu faria isso no "triggered.connect" atribui a função de desenho, e que ela funciona apenas quando o botão é clicado. Talvez haja alguns vínculos para isso, como no tkinter, na semelhança:

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)

E, no final, acabei de atribuir essa função ao botão, e tudo funcionou bem

Serei muito grato por respostas e especialmente por exemplos de solução de problemas ou exemplos de pincéis que não são declarados nos eventos

P.S. Peço desculpas pelo meu inglês, se algo estiver errado с:

questionAnswers(1)

yourAnswerToTheQuestion