So I'm making an rpg project in Pygame and I need a button class that has text. This is my Code so far. I tried to use some code examples online and on this site but I couldn't make them work in the way I wanted. ;-;

What I want is a button that can drawn to my GameWindow that includes text. I'll figure out the event handling later on.

It would be greatly appreciated if someone could give me an explanation of how a button class that utilises text would work in pygame and explain it in a way I could implement in my Button Class. Previously I have tried simply placing text in the centre of the screen by dividing the width and height by two and placing coloured rects adjacent to the text to try and label the rects so I could use them as buttons. However I realised this wasn't a practical solution, as I would be needing many buttons throughout my game and this method took up large portions of my screen. 
**I do not understand how to blit a message onto a rect using a class**. The Button class below is where I attempted to place text onto top of a rect but I found this very hard.
Ideally my goal here is to be able to call an instance of my button class which I can use as a button. 

BTW asking here was a last resort. I spent almost three hours trying to figure this out and its bad for me to stare at a screen for that long.

```html
import pygame, random, sys, math, time
from pygame.locals import *

pygame.init()

FPS = 30
fpsClock = pygame.time.Clock()

GameWindow = pygame.display.set_mode((650,520))

#Variables
Blue = (0,0,255)
Green = (0,255,0)
Red = (255,0,0)
White = (255,255,255)
Black = (0,0,0)

def Button():
    def__init__(self, surface, x, y, width, height, colour, message, action=None)
    self.x = x
    self.y = y
    self.width = width
    self.height = height
    self.font = pygame.font.Font(None, 20)
    self.message = message

background_image = pygame.image.load('map.JPG')
title_image = pygame.image.load('title.PNG')

while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
        GameWindow.blit(background_image, [0,0])
        GameWindow.blit(title_image, [100,0])
        pygame.display.flip()
        fpsClock.tick(FPS)
```