All Button Boxes and Text are black

Okay! I solved the issue; it turns out some lines of code in my ‘button’ class had been deleted by accident. I had a backup of the code and after replacing the class with the working version, everything is back to normal.

The fixed class code will be at the bottom.

Thank you to @Nebulous29 for making the suggestion to change the value of the outline to (255, 0, 0). That’s not actually the colour of the button but the outline surrounding the button. After I changed that I realised that something wasn’t working with the outline function.

Fixed Code:

class Button():
    def __init__(self, x, y, width, height, outline, settings, text = "", action = None):   
        self.x = x                    
        self.y = y                    
        self.width = width              
        self.height = height            
        self.text = text                
        self.settings = settings        
        self.action = action            
        self.outline = outline         

    def draw(self, screen, outline = None):

        if self.outline:        
            pygame.draw.rect(screen, self.outline, (self.x - 2, self.y - 2, self.width + 4, self.height + 4), 0)

        color = self.settings.button_color if not self.isOver(pygame.mouse.get_pos()) else self.settings.button_color_hover
        pygame.draw.rect(screen, color, (self.x, self.y, self.width, self.height), 0)   
        if self.text != "":
            font = pygame.font.SysFont('segoeuisemibold', self.settings.TextSize)       
            text = font.render(self.text, 1, (0, 0, 0))                                 
            screen.blit(text, (self.x + (self.width / 2 - text.get_width() / 2), self.y + (self.height / 2 - text.get_height() / 2)))   

    def update(self, events):         
        for event in events:
            if event.type == pygame.MOUSEBUTTONDOWN and self.isOver(pygame.mouse.get_pos()) and self.action:

    def isOver(self, pos):              
        if pos[0] > self.x and pos[0] < self.x + self.width:
            if pos[1] > self.y and pos[1] < self.y + self.height:
                return True         
        return False

CLICK HERE to find out more related problems solutions.

Leave a Comment

Your email address will not be published.

Scroll to Top