Text 如何删除/替换pygame中的文本

Text 如何删除/替换pygame中的文本,text,pygame,blit,Text,Pygame,Blit,我是pygame的新手,我第一次遇到了难题,但我找不到答案 在快速输入文本,然后更改同一变量的字符串后,游戏不会将原始文本替换为新文本,而是将两个文本重叠。您必须先删除旧文本。通过Font.render创建的曲面是普通曲面。一旦曲面为blit,其内容将成为目标曲面的一部分,您必须操纵目标曲面以从源曲面中删除任何blit 擦除目标曲面的一种方法是在其上blit一个背景曲面。背景曲面是目标曲面上没有任何类似文本或精灵的外观。另一种方法是使用纯色填充曲面: #pygame初始化在这里 screen=p

我是pygame的新手,我第一次遇到了难题,但我找不到答案


在快速输入文本,然后更改同一变量的字符串后,游戏不会将原始文本替换为新文本,而是将两个文本重叠。

您必须先删除旧文本。通过
Font.render
创建的曲面是普通曲面。一旦
曲面
为blit,其内容将成为目标曲面的一部分,您必须操纵目标曲面以从源曲面中删除任何blit

擦除目标曲面的一种方法是在其上blit一个背景曲面。背景曲面是目标曲面上没有任何类似文本或精灵的外观。另一种方法是使用纯色填充曲面:

#pygame初始化在这里
screen=pygame.display.get_surface()
font=pygame.font.font(无,40)
font_surface=font.render(“原始”,True,pygame.Color(“白色”);
筛板(表面,(0,0))
屏幕填充(pygame.Color(“黑色”)#擦除整个屏幕表面
font_surface=font.render(“已编辑”,True,pygame.Color(“白色”);
筛板(表面,(0,0))

可以有其他解决方案,即使没有太大区别。 前面的答案会删除所有屏幕,但您可以只删除文本。 如果它写在一个图像上,您将只替换图像的一部分,方法是获取文本大小并对相应的图像部分(pygame.surface.subground函数)进行blitting。 如果不是,你可以只填充屏幕的一部分。
在这种情况下,您只需删除文本。

您也可以覆盖文本。
像这样:

label = myfont.render("Text", 0, (255,255,0))
screen.blit(label, (100, 100))
if x: //Parameter you check before overwrite
    label = myfont.render("Text", 0, BACKGROUND_COLOR)
    screen.blit(label, (100, 100))

要仅擦除文本区域,请使用:
screen.fill(pygame.Color(“黑色”),(0,0,110,40))
非常感谢您,救命恩人!