code: def setSurfaces(self, normalSurface, downSurface=None, highlightSurface=None):
          
          if downSurface is None:
              downSurface = normalSurface
          if highlightSurface is None:
              highlightSurface = normalSurface
  
          if type(normalSurface) == str:
              self.origSurfaceNormal = pygame.image.load(normalSurface)
          if type(downSurface) == str:
              self.origSurfaceDown = pygame.image.load(downSurface)
          if type(highlightSurface) == str:
              self.origSurfaceHighlight = pygame.image.load(highlightSurface)
  
          if self.origSurfaceNormal.get_size() != self.origSurfaceDown.get_size() != self.origSurfaceHighlight.get_size():
              raise Exception('foo')
  
          self.surfaceNormal = self.origSurfaceNormal
          self.surfaceDown = self.origSurfaceDown
          self.surfaceHighlight = self.origSurfaceHighlight
          self.customSurfaces = True
          self._rect = pygame.Rect((self._rect.left, self._rect.top, self.surfaceNormal.get_width(), self.surfaceNormal.get_height()))
docs: Switch the button to a custom image type of button (rather than a
          text button). You can specify either a pygame.Surface object or a
          string of a filename to load for each of the three button appearance
          states.