Why does my python/pygame application not pop up properly
Question: I have made a program with python and pygame and bundled it into a .app file
using py2app. It just doesn't open up properly when i click the icon, it
doesn't appear on the screen until i click the icon on the dock, by then some
of the code has already ran and it ruins the point of the actual program.

I also can't seem to change the icon from the normal icon to the icon that i
made, i have put it into the folder, replacing the default one. The icon
doesn't appear on the dock, the pygame snake does.

Finally will the .app file work on any mac?

BTW, this is just a program for some fun Code:

    
    
    import random, pygame, time, sys
    
    time.sleep(2)
    colour_1 = (0,255,255)
    colour_2 = (0,255,0)
    colour_3 = (255,255,0)
    colour_4 = (255,0,0)
    colour_5 = (0,0,255)
    
    
    black = (0,0,0)
    white = (255,255,255)
    h = 500
    w = 500
    
    pygame.init()
    
    FPS = 30
    fpsClock = pygame.time.Clock()
    screen = pygame.display.set_mode((w,h))
    
    pygame.display.set_caption("You just lost the game")
    alpha = 255
    
    shape = screen.convert_alpha()
    
    stimulus = pygame.Rect(0,0,500,500)
    def the_game():
        #Makes the text "the game" and the text "you just lost it" fade into the screen
        global alpha
        alpha = alpha - 5
        ##############
        Font = pygame.font.SysFont("monospace",40,True,False)
        Text = Font.render("The Game",1,white)
        screen.blit(Text,(140,125))
        pygame.draw.rect(shape,(0,0,0,alpha),stimulus)
        screen.blit(shape,(0,0))
        pygame.display.update(stimulus)
        fpsClock.tick(FPS)
    
    
    
    def lost_it():
        #Writes "the game" and "you just lost it" onto the screen
        Font = pygame.font.SysFont("monospace",40,True,False)
        Text = Font.render("The Game",1,(white))
        text = Font.render("YOU JUST LOST IT",1,(white))
        screen.blit(text,(50,250))
        screen.blit(Text,(140,125))
        pygame.display.update()
    
    
    def flash():
        #Writes "the game" and "you just lost it" onto the screen
        #Changes the background colour of the screen
        Font = pygame.font.SysFont("monospace",40,True,False)
        Text = Font.render("The Game",1,(black))
        text = Font.render("YOU JUST LOST IT",1,(black))
        rand = random.randint(0,5)
        if rand == 1:
            screen.fill(colour_1)
        if rand == 2:
            screen.fill(colour_2)
        if rand == 3:
            screen.fill(colour_3)
        if rand == 4:
            screen.fill(colour_4)
        if rand == 5:
            screen.fill(colour_5)
        screen.blit(text,(50,250))
        screen.blit(Text,(140,125))
        pygame.display.update()
        for event in pygame.event.get():
                    if event.type == pygame.QUIT:
                            pygame.quit(); sys.exit();
    
    
    
    
    while True:
        if alpha == 0:
            break
        else:
            the_game()
    
    
    time.sleep(1)
    lost_it()
    while True:
        flash()
        for event in pygame.event.get():
                    if event.type == pygame.QUIT:
                            pygame.quit(); sys.exit();
    


Answer: There is a method in pygame.display called set_icon. You can use it to
override default snake icon

