I'm using Python 3.6.
I'm trying to have Pygame do the following when I left-click on the 'Start Game' rectangle object:
- Change to a new background image from 'bgHome' image to 'bgIntro' image via the variable 'background'.
- Hold the new background image, and remove the rectangle objects when I release the left mouse button.
- Display the text in the file 'intro.txt' and retain the footer text which sits in the variable text1.
The code works as expected until I release the left mouse button, where it reverts back to what is the previous screen, effectively my title screen at the beginning of mainloop().
I'm thinking I need to add in some kind of line(s) after the left click action to tell Pygame the mouse button is still down?
Full code as follows:
# Imports
import sys
import os
import random
import time
import pygame
from pygame.locals import *
# Must add to initialize pygame
pygame.init()
#Colour chart
LIGHT_BLUE = (51, 102, 255)
BLUE = (0, 0, 255)
DARK_BLUE = (0, 0, 102)
LIGHT_RED = (255, 65, 65)
RED = (255, 0, 0)
DARK_RED = (153, 0, 0)
LIGHT_GREEN = (102, 255, 0)
GREEN = (51, 153, 0)
DARK_GREEN = (0, 51, 0)
WHITE = (255, 255, 255)
GREY = (102, 102, 102)
BLACK = (0, 0, 0)
YELLOW = (255, 255, 0)
ORANGE = (255, 102, 0)
PURPLE = (153, 0, 204)
#Other variables
res = (500,500)
screen = pygame.display.set_mode(res)
width = screen.get_width()
height = screen.get_height()
leftclick = (1, 0, 0)
middleclick = (0, 1, 0)
rightclick = (0, 0, 1)
#Backgrounds for game
background = pygame.image.load("bg1.png")
bgHome = pygame.image.load("bg1.png")
bgOptions = 0
bgIntro = pygame.image.load("bg2.png")
bgSimulate = 0
bgAssets = 0
bgEmpl = 0
#Setting up Fonts
smallfont = pygame.font.SysFont('Corbel',20)
mediumfont = pygame.font.SysFont('Corbel',32)
largefont = pygame.font.SysFont('Corbel',46)
#Common text featured throughout game
text1 = "Footer text goes here."
copyright_text = smallfont.render(text1 , True , WHITE)
#Load text file
f = open('Intro.txt', 'r')
content = f.read()
intromsg = smallfont.render(content, True, BLACK)
#Set texts for buttons
start_butt_text = smallfont.render('Start Game' , True , WHITE)
load_butt_text = smallfont.render('Load Game' , True , WHITE)
quit_butt_text = smallfont.render('Quit Game' , True , WHITE)
#Player class
class Player():
    def __init__(self, name):
        self.name = name
        self.cash = 10000
        self.assets = 0
        self.execs = 0
        self.mgmt = 0
        self.directlab = 0
        self.indirectlab = 0
        self.liab = 0
        self.equity = self.cash + self.assets - self.liab
        
#Create a white screen 
DISPLAYSURF = pygame.display.set_mode((500,500))
DISPLAYSURF.fill(WHITE)
pygame.display.set_caption("Capitalism: The Game")
    
    
def ButtonSG():
        pygame.draw.rect(screen,GREY,[10,10,140,40])
        pygame.draw.rect(screen,RED,[15,15,130,30]) 
        pygame.draw.rect(screen,GREY,[10,60,140,40])
        pygame.draw.rect(screen,BLACK,[15,65,130,30])
        pygame.draw.rect(screen,GREY,[10,110,140,40])
        pygame.draw.rect(screen,BLACK,[15,115,130,30])
def ButtonLG():
        pygame.draw.rect(screen,GREY,[10,10,140,40])
        pygame.draw.rect(screen,BLACK,[15,15,130,30]) 
        pygame.draw.rect(screen,GREY,[10,60,140,40])
        pygame.draw.rect(screen,RED,[15,65,130,30])
        pygame.draw.rect(screen,GREY,[10,110,140,40])
        pygame.draw.rect(screen,BLACK,[15,115,130,30])
        
        
def ButtonQG():
        pygame.draw.rect(screen,GREY,[10,10,140,40])
        pygame.draw.rect(screen,BLACK,[15,15,130,30])
        pygame.draw.rect(screen,GREY,[10,60,140,40])
        pygame.draw.rect(screen,BLACK,[15,65,130,30])
        pygame.draw.rect(screen,GREY,[10,110,140,40])
        pygame.draw.rect(screen,RED,[15,115,130,30])
        
def ButtonNil():
        pygame.draw.rect(screen,GREY,[10,10,140,40])
        pygame.draw.rect(screen,BLACK,[15,15,130,30])
        pygame.draw.rect(screen,GREY,[10,60,140,40])
        pygame.draw.rect(screen,BLACK,[15,65,130,30])
        pygame.draw.rect(screen,GREY,[10,110,140,40])
        pygame.draw.rect(screen,BLACK,[15,115,130,30])  
def IntroScreen():
    DISPLAYSURF.fill(WHITE)
    background = bgIntro
    DISPLAYSURF.blit(background, (0, 0))
    DISPLAYSURF.blit(intromsg, (10,10))
#Game loop
def resetscreen():
    DISPLAYSURF.blit(bgHome, (0,0))
def mainloop():
    while True: 
                  
        background = pygame.image.load("bg1.png")
            
        # fills the screen with a color 
        
        DISPLAYSURF.blit(background, (0,0))
      
        # stores the (x,y) coordinates into 
        # the variable as a tuple 
        mouse = pygame.mouse.get_pos() 
      
        # if mouse is hovered on a button it changes colour
        if width-width+10 <= mouse[0] <= width-width+150 and height-height+10 <= mouse[1] <= height-height+50:
            ButtonSG()
        elif width-width+10 <= mouse[0] <= width-width+150 and height-height+60 <= mouse[1] <= height-height+100:
            ButtonLG() 
        elif width-width+10 <= mouse[0] <= width-width+150 and height-height+110 <= mouse[1] <= height-height+150:
            ButtonQG()
        else: 
            ButtonNil()
      
        # superimposing the text onto our button 
        screen.blit(start_butt_text, (35,22))
        screen.blit(load_butt_text, (35,72)) 
        screen.blit(quit_butt_text, (35,122))
        screen.blit(copyright_text, (10,height-25)) 
              
        #checks if a mouse is clicked 
        if pygame.mouse.get_pressed() == (leftclick):
            if width-width+10 <= mouse[0] <= width-width+150 and height-height+10 <= mouse[1] <= height-height+50:
                IntroScreen()
            elif width-width+10 <= mouse[0] <= width-width+150 and height-height+60 <= mouse[1] <= height-height+100:
                pass
            elif width-width+10 <= mouse[0] <= width-width+150 and height-height+110 <= mouse[1] <= height-height+150:
                pygame.quit()
                sys.exit()
            else:
                pass
        
            screen.blit(copyright_text, (10,height-25)) 
        for ev in pygame.event.get(): 
          
            if ev.type == pygame.QUIT: 
                pygame.quit()           
        # updates the frames of the game 
        pygame.display.update() 
mainloop()
 
    