Python 如何清除显示器上的所有文本

Python 如何清除显示器上的所有文本,python,text,pygame,display,Python,Text,Pygame,Display,我是第一次问关于堆栈溢出的问题!我是一个12岁的男孩,住在香港,所以如果我的英语是错误的,请告诉我,请不要记在心里。除此之外,我是Python的更新版本。我不知道代码的意思。每个人都能做一个#来告诉我它的意思吗?谢谢 我正在做一个使用Python的项目。另外,对于显示,我也使用Pygame。但是显示器有一些问题。 以下是我的测试代码: # install pygame import pygame from pygame import * pygame.init() # play music m

我是第一次问关于堆栈溢出的问题!我是一个12岁的男孩,住在香港,所以如果我的英语是错误的,请告诉我,请不要记在心里。除此之外,我是Python的更新版本。我不知道代码的意思。每个人都能做一个
#
来告诉我它的意思吗?谢谢

我正在做一个使用Python的项目。另外,对于显示,我也使用Pygame。但是显示器有一些问题。 以下是我的测试代码:

# install pygame
import pygame
from pygame import *
pygame.init()

# play music
mixer.init()
mixer.music.load("game_music.mp3")
mixer.music.play()

# colour
red = (255, 0, 0)
green = (0, 255, 0)
blue = (0, 0, 255)
grass_green = (112, 173, 71)
white = (255, 255, 255)
black = (0, 0, 0)

# screen settings
window = pygame.display.set_mode((640, 600))
window.fill(grass_green)
pygame.display.set_caption("What's Your Number?")

# fonts settings
default_font = pygame.font.get_default_font()
font_a = pygame.font.Font(default_font, 57)
font_b = pygame.font.Font(default_font, 30)
font_c = pygame.font.Font(default_font, 18)

# text
title = font_a.render("What's Your Number?", 1, white)
enter_to_start = font_b.render("Press the Enter to start", 1, white)
random_mode = font_a.render("Random Mode", 1, black)
your_mode = font_a.render("Your Mode", 1, black)
des_random_1 = font_c.render("The PC choose a random number for you to", 1, black)
des_random_2 = font_c.render("guess! Can you guess it correct?", 1, black)
des_your = font_c.render("Pick a number and let you friends to guess!", 1, black)
random_control = font_b.render("Press the up arrow", 1, black)
your_control = font_b.render("Press the down arrow", 1, black)

# image
up_arrow = pygame.image.load("up_arrow_new.png")
down_arrow = pygame.image.load("down_arrow_new.png")


def blit_img(img, x, y):
    window.blit(img, (x, y))


# game
game = False
temp = True
while not game:
    if temp:
        window.blit(title, (10, 150))
        window.blit(enter_to_start, (160, 350))
        pygame.display.flip()
        for event in pygame.event.get():
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_KP_ENTER:
                    temp = False
                    window.fill(grass_green)
                    pygame.draw.rect(window, red, [50, 50, 540, 225])
                    pygame.draw.rect(window, blue, [50, 325, 540, 225])
                    window.blit(random_mode, (55, 65))
                    window.blit(des_random_1, (55, 150))
                    window.blit(des_random_2, (55, 200))
                    window.blit(random_control, (55, 240))
                    blit_img(up_arrow, 450, 150)
                    window.blit(your_mode, (55, 335))
                    window.blit(des_your, (55, 425))
                    window.blit(your_control, (55, 515))
                    blit_img(down_arrow, 450, 425)
                    pygame.display.flip()
                    if event.key == pygame.K_UP or event.key == pygame.K_DOWN:
                        if temp == False:
                            temp = True
                            window.fill(grass_green)
                            pygame.display.flip()
                if event.key == pygame.K_ESCAPE:
                    game = True
            if event.type == pygame.QUIT:
                game = True

我想让它像一本书或一个PowerPoint一样有页面。在这段代码中,我的问题是显示的文本无法擦除,并且
blit
无法删除其中的新文本。有人能帮我吗?非常感谢

在pygame中删除先前内容的方法是绘制背景和所有你想保留的内容。在本例中,您希望删除Hello,因此必须停止pygame绘制Hello,然后在其上绘制背景

应该是这样的:

import pygame
pygame.init()

#colour settings
white = (255, 255, 255)
black = (0, 0, 0)
red = (255, 0, 0)
green = (0, 255, 0)
blue = (0, 0, 255)

#making a screen(display)
window = pygame.display.set_mode((640, 600))
window.fill(green)

# fonts settings
default_font = pygame.font.get_default_font()
font = pygame.font.Font(default_font, 57)
temp = True

#the things I want to display
while True:
    if temp:
        what_I_say = font.render("Hello", 1, white)
        window.blit(what_I_say, (10, 150))
    pygame.display.flip()
    for event in pygame.event.get():
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_RETURN:
                temp = False
                window.fill(green)
                pygame.draw.rect(window, red, [50, 50, 540, 500])

布尔值temp标记是否绘制Hello。按回车键(我的键盘没有键盘回车键)时,temp设置为false(因此它将停止绘制Hello),窗口将重新填充绿色(以覆盖上一个Hello),然后绘制一个红色矩形。

我会每帧填充一次窗口,然后渲染并blit当前文本。文本可以存储在列表中,当前文本可以通过事件循环中递增的索引变量访问

import pygame


pygame.init()

white = (255, 255, 255)
black = (0, 0, 0)

window = pygame.display.set_mode((640, 600))
clock = pygame.time.Clock()  # A clock to limit the frame rate.
font = pygame.font.Font(None, 57)  # Use the default font.
texts = ['Hello', "what's", 'up?']
text_index = 0

done = False
while not done:
    # Handle events.
    for event in pygame.event.get():
        # Allow the user to quit by clicking on the 'X' button.
        if event.type == pygame.QUIT:
            done = True
        elif event.type == pygame.KEYDOWN:
            if event.key in (pygame.K_KP_ENTER, pygame.K_RETURN):
                # Make sure that we don't get an IndexError.
                if text_index < len(texts)-1:
                    # Increment the index.
                    text_index += 1

    # Insert additional game logic here.

    # Finally draw everything.
    window.fill(white)  # Use fill to clear the window.
    what_I_say = font.render(texts[text_index], True, black)
    window.blit(what_I_say, (10, 150))

    pygame.display.flip()
    clock.tick(30)  # Limit the frame rate to 30 FPS.
导入pygame
pygame.init()
白色=(255,255,255)
黑色=(0,0,0)
window=pygame.display.set_模式((640600))
clock=pygame.time.clock()#限制帧速率的时钟。
font=pygame.font.font(无,57)#使用默认字体。
text=['Hello','what's','up']
文本索引=0
完成=错误
虽然没有这样做:
#处理事件。
对于pygame.event.get()中的事件:
#允许用户通过单击“X”按钮退出。
如果event.type==pygame.QUIT:
完成=正确
elif event.type==pygame.KEYDOWN:
如果event.key in(pygame.K_KP_ENTER,pygame.K_RETURN):
#确保我们没有索引器。
如果文本索引

如果您确实只需要在用户想要切换到下一页时更新窗口(发生事件),您也可以使用而不是
pygame.event.get

谢谢!!它解决了问题!非常感谢你!!再弄清楚一点怎么样?我只需要再做一个临时变量,然后像你一样做吗?它无法修复它,因为我问题中的代码只是一个测试代码,我真正的游戏代码不适用于你的答案。或者你介意我给你真正的代码并帮我修复它吗?到底是什么不起作用?请更准确地描述你的目标和问题。如果您愿意,您可以将实际代码添加到问题中,但不要只是发布完整的项目并尝试先发布。我的游戏是让人们猜一个数字,因此它将有许多设置,而不仅仅是文本。我不知道如何控制列表。