title: Erasing pen on a canvas
body: <p>I have a functioning drawing application for some segmentation on images. For this I have two layers, the original image and the image layer I am drawing on.</p>
  
  <p>I now want to implement a method for erasing. I have implemented undo functionality, but I would also like the user to be able to select a brush "color" as to be able to erase specific parts, like the eraser in paint. I thought this would be possible by drawing with a color with opacity, but that just results in no line being drawn.</p>
  
  <p>The goal for me is therefore to draw a line, that removes the pixel values in the image layer, such that I can see the underlying image</p>
  
  <h1>MVP of drawing</h1>
  
  <pre><code>from PyQt5.QtWidgets import QApplication, QMainWindow, QMenuBar, QMenu, QAction
  from PyQt5.QtGui import QIcon, QImage, QPainter, QPen
  from PyQt5.QtCore import Qt, QPoint
  from PyQt5.QtGui import QColor
  import sys
  
  class Window(QMainWindow):
      def __init__(self):
          super().__init__()
  
          top = 400
          left = 400
          width = 800
          height = 600
  
          self.setWindowTitle("MyPainter")
          self.setGeometry(top, left, width, height)
  
          self.image = QImage(self.size(), QImage.Format_ARGB32)
          self.image.fill(Qt.white)
          self.imageDraw = QImage(self.size(), QImage.Format_ARGB32)
          self.imageDraw.fill(Qt.transparent)
  
          self.drawing = False
          self.brushSize = 2
          self.brushColor = Qt.black
          self.lastPoint = QPoint()
  
          self.change = False
          mainMenu = self.menuBar()
          changeColour = mainMenu.addMenu("changeColour")
          changeColourAction = QAction("change",self)
          changeColour.addAction(changeColourAction)
          changeColourAction.triggered.connect(self.changeColour)
  
      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.imageDraw)
              painter.setPen(QPen(self.brushColor, self.brushSize,     Qt.SolidLine, Qt.RoundCap, Qt.RoundJoin))
              painter.drawLine(self.lastPoint, event.pos())
              self.lastPoint = event.pos()
              self.update()
  
      def mouseReleaseEvent(self, event):
          if event.button == Qt.LeftButton:
              self.drawing = False
  
      def paintEvent(self, event):
          canvasPainter = QPainter(self)
          canvasPainter.drawImage(self.rect(), self.image, self.image.rect())
          canvasPainter.drawImage(self.rect(), self.imageDraw, self.imageDraw.rect())
  
      def changeColour(self):
          if not self.change:
              # erase
              self.brushColor = QColor(255,255,255,0)
          else:
              self.brushColor = Qt.black
          self.change = not self.change
  
  if __name__ == "__main__":
      app = QApplication(sys.argv)
      window = Window()
      window.show()
      app.exec()
  </code></pre>
  
  <h1>How to erase a subset of pixels?</h1>
  
  <p>As in this example what color should be given to <code>self.brushColor</code> in the <code>changeColour</code> function? </p>
  
  <h2>Info</h2>
  
  <p>The colour white is not the solution, because in reality the image at the bottom is a complex image, I therefore want to make the toplayer "see-through" again, when erasing.</p>