从屏幕上清除文本,并添加新文本



我一直在使用PyGame并尝试学习它。如果您想打电话给我的工作方式,我就可以制作一个"按钮"。我有Main()显示主菜单。然后Pick_level()将允许您选择要播放的级别。我的问题是,一旦执行pick_level(),将main()文本从屏幕上获取。以下是我的代码。由于某种原因,它无法正确应对。

#import games
import pygame
from pygame.locals import *
import sys

pygame.init()

DISPLAYSURF = pygame.display.set_mode((1024, 720), 0, 32)
pygame.display.set_caption('The End')
#Set color of main menu
BLUE = (0, 0, 255)
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
DISPLAYSURF.fill(BLUE)
# Set up text to show.
myfont = pygame.font.SysFont("curier new", 45)
gameFont = pygame.font.SysFont("times new roman", 20)
def main():
""" Main Program """
# render text
lbltheEnd = myfont.render("The End", 1, WHITE)
lblchooseLevel = gameFont.render("Choose Level", 1, WHITE)
lblCredits = gameFont.render("Credits", 1, WHITE)
lblexit = gameFont.render("Exit", 1, WHITE)
DISPLAYSURF.blit(lbltheEnd, (100, 100))
#rectangle for button click
global btnChooseLevel
btnChooseLevel = pygame.draw.rect(DISPLAYSURF, BLACK, (98, 150, 111, 25))
DISPLAYSURF.blit(lblchooseLevel, (100, 150))

def pick_level():
""" Show pick Level """
lblLevel = myfont.render("Level 1", 1, WHITE)
DISPLAYSURF.blit(lblLevel, (100, 100))

# Run the program
main()
while True:
for event in pygame.event.get():
    if event.type == QUIT:
        pygame.quit()
        sys.exit()
    # Clicks for make shift buttons
    if event.type == MOUSEBUTTONUP:
        print(str(event.pos[0]) + " " + str(event.pos[1]))
        if(btnChooseLevel.collidepoint(event.pos)):
            print("Choose Level Clicked")
            pick_level()

    pygame.display.update()

做到这一点的最快方法是清除整个屏幕并重新绘制所需的新所有内容。类似pick_level()中的内容您可以添加:

DISPLAYSURF.fill(BLUE) #if BLUE is your background color or whatever background color you want

随后是您的pick_level()代码

为了使您更容易,您应该拥有一种称为draw_background()的方法,该方法绘制每个菜单的基本背景,然后您可以在其上绘制特定的文本/图像。

最新更新