code: def __update__(self):
      # up
      r, g, b = self.colour1
      self.buttonUP.fill(self.colour1)
      self.pyg.draw.rect(
          self.buttonUP,
          (r + 20, g + 20, b + 20),
          (0, 0, self.width, self.height / 2),
          0,
      )
      self.pyg.draw.line(
          self.buttonUP, self.colour2, (2, 0), (self.width - 3, 0), 1
      )
      self.pyg.draw.line(
          self.buttonUP,
          self.colour2,
          (2, self.height - 1),
          (self.width - 3, self.height - 1),
          1,
      )
      self.pyg.draw.line(
          self.buttonUP, self.colour2, (0, 2), (0, self.height - 3), 1
      )
      self.pyg.draw.line(
          self.buttonUP,
          self.colour2,
          (self.width - 1, 2),
          (self.width - 1, self.height - 3),
          1,
      )
      self.buttonUP.set_at((1, 1), self.colour2)
      self.buttonUP.set_at((self.width - 2, 1), self.colour2)
      self.buttonUP.set_at((1, self.height - 2), self.colour2)
      self.buttonUP.set_at(
          (self.width - 2, self.height - 2), self.colour2
      )
      self.buttonUP.blit(
          self.font.render(self.text, False, (0, 0, 0)),
          (
              (self.width / 2) - (self.text_width / 2),
              (self.height / 2) - (self.text_height / 2),
          ),
      )
      # hover
      self.buttonHOVER.fill(self.colour3)
      self.pyg.draw.rect(
          self.buttonHOVER,
          self.colour4,
          (0, 0, self.width, self.height / 2),
          0,
      )
      self.pyg.draw.line(
          self.buttonHOVER, self.colour2, (2, 0), (self.width - 3, 0), 1
      )
      self.pyg.draw.line(
          self.buttonHOVER,
          self.colour2,
          (2, self.height - 1),
          (self.width - 3, self.height - 1),
          1,
      )
      self.pyg.draw.line(
          self.buttonHOVER,
          self.colour4,
          (2, self.height - 2),
          (self.width - 3, self.height - 2),
          1,
      )
      self.pyg.draw.line(
          self.buttonHOVER,
          self.colour2,
          (0, 2),
          (0, self.height - 3),
          1,
      )
      self.pyg.draw.line(
          self.buttonHOVER,
          self.colour4,
          (1, 2),
          (1, self.height - 3),
          2,
      )
      self.pyg.draw.line(
          self.buttonHOVER,
          self.colour2,
          (self.width - 1, 2),
          (self.width - 1, self.height - 3),
          1,
      )
      self.buttonHOVER.set_at((1, 1), self.colour2)
      self.buttonHOVER.set_at((self.width - 2, 1), self.colour2)
      self.buttonHOVER.set_at((1, self.height - 2), self.colour2)
      self.buttonHOVER.set_at(
          (self.width - 2, self.height - 2), self.colour2
      )
      self.buttonHOVER.blit(
          self.font.render(self.text, False, (0, 0, 0)),
          (
              (self.width / 2) - (self.text_width / 2),
              (self.height / 2) - (self.text_height / 2),
          ),
      )
      # down
      r, g, b = self.colour3
      r2, g2, b2 = self.colour4
      self.buttonDOWN.fill((r - 20, g - 20, b - 10))
      self.pyg.draw.rect(
          self.buttonDOWN,
          (r2 - 20, g2 - 20, b2 - 10),
          (0, 0, self.width, self.height / 2),
          0,
      )
      self.pyg.draw.line(
          self.buttonDOWN, self.colour2, (2, 0), (self.width - 3, 0), 1
      )
      self.pyg.draw.line(
          self.buttonDOWN,
          (r - 20, g - 20, b - 10),
          (2, 1),
          (self.width - 3, 1),
          2,
      )
      self.pyg.draw.line(
          self.buttonDOWN,
          self.colour2,
          (2, self.height - 1),
          (self.width - 3, self.height - 1),
          1,
      )
      self.pyg.draw.line(
          self.buttonDOWN, self.colour2, (0, 2), (0, self.height - 3), 1
      )
      self.pyg.draw.line(
          self.buttonDOWN,
          (r - 20, g - 20, b - 10),
          (1, 2),
          (1, self.height - 3),
          2,
      )
      self.pyg.draw.line(
          self.buttonDOWN,
          self.colour2,
          (self.width - 1, 2),
          (self.width - 1, self.height - 3),
          1,
      )
      self.buttonDOWN.set_at((1, 1), self.colour2)
      self.buttonDOWN.set_at((self.width - 2, 1), self.colour2)
      self.buttonDOWN.set_at((1, self.height - 2), self.colour2)
      self.buttonDOWN.set_at(
          (self.width - 2, self.height - 2), self.colour2
      )
      self.buttonDOWN.blit(
          self.font.render(self.text, False, (0, 0, 0)),
          (
              (self.width / 2) - (self.text_width / 2) + 1,
              (self.height / 2) - (self.text_height / 2),
          ),
      )
  
file_path: rt-audio-fft/src/utils.py
imports: import numpy
  import math, scipy, pygame
label_desc: Use image node_id 2 for calling the Button obj's underlying member method code with example usage: obj.__update__() without return types