Python、pygame 程序在尝试打开时立即关闭

Python, pygame program closes immediately when trying to open

我正在制作一个简单的 pygame 程序,到目前为止它运行良好。当我打开它时,它会立即关闭。我已经发现它只在我尝试执行函数 "menu" 时发生。其他功能正常工作。对不起我的英语,这里是代码:

import pygame
from pygame.locals import *
pygame.init()

'''VARIABLES'''
white = (255,255,255)
black = (0,0,0)
red = (255,0,0)
green = (0,255,0)
blue = (0,0,255)

'''GUI AND FPS'''
w = 1000
h = 600
screen = pygame.display.set_mode((w,h))
clock = pygame.time.Clock()
FPS = 60
exit = False

'''TEXT FUNCTION'''
def text(msg,color,size,x,y):
    font = pygame.font.SysFont("Arial",size)
    render = font.render(str(msg),True,color)
    screen.blit(render,(x,y))

def gui():
    #ROWS
    screen.fill(white)
    pygame.draw.rect(screen,black,(0,0,10,600))
    pygame.draw.rect(screen,black,(190,0,10,600))
    pygame.draw.rect(screen,black,(390,0,10,600))
    pygame.draw.rect(screen,black,(590,0,10,600))
    pygame.draw.rect(screen,black,(790,0,10,600))
    pygame.draw.rect(screen,black,(990,0,10,600))
    #COLS
    pygame.draw.rect(screen,black,(0,0,1000,10))
    pygame.draw.rect(screen,black,(0,590,1000,10))
    pygame.draw.rect(screen,black,(0,100,1000,10))

    text("Maandag",red,35,30,30)
    text("Dinsdag",red,35,230,30)
    text("Woensdag",red,35,410,30)
    text("Donderdag",red,35,610,30)
    text("Vrijdag",red,35,830,30)

def prompt():
    maand = input("Welke maand?")   

def menu():
    global exit
    while not exit:
        screen.fill(red)
        text("Voor welke maand",white,80,300,20)
        screen.fill(red)
        text("Voor welke maand",white,80,300,20)
        september = pygame.draw.rect(screen,white,(100,100,200,100))
        oktober = pygame.draw.rect(screen,white,(400,100,200,100))
        november = pygame.draw.rect(screen,white,(700,100,200,100))

        december = pygame.draw.rect(screen,white,(100,250,200,100))
        januari = pygame.draw.rect(screen,white,(400,250,200,100))
        februari = pygame.draw.rect(screen,white,(700,250,200,100))

        maart = pygame.draw.rect(screen,white,(100,400,200,100))
        april = pygame.draw.rect(screen,white,(400,400,200,100))
        mei = pygame.draw.rect(screen,white,(700,400,200,100))

        juni = pygame.draw.rect(screen,white,(100,100,200,100))
        exit = pygame.draw.rect(screen,white,(100,100,200,100))

        for event in pygame.event.get():
            if event.type == QUIT:
                exit = True
            elif event.type == KEYDOWN:
                if event.key == K_ESCAPE:
                    exit = True
        pygame.display.update()
        clock.tick(FPS)
    pygame.quit()
    quit()

def main():
    global exit
    while not exit:
        gui()
        for event in pygame.event.get():
            if event.type == QUIT:
                exit = True
            elif event.type == KEYDOWN:
                if event.key == K_ESCAPE:
                    exit = True
                elif event.key ==K_SPACE:
                    prompt()
        pygame.display.update()
        clock.tick(FPS)
    pygame.quit()
    quit()
menu()

menu 函数中绘制日历月份时,最后一行是

exit = pygame.draw.rect(screen,white,(100,100,200,100))

然后将设置 exit 并结束 while 循环。您可能只需要为上个月使用不同的名称。