Python 如何在pygame中不让文本相互重叠?

Python 如何在pygame中不让文本相互重叠?,python,text,pygame,Python,Text,Pygame,我有两个文本示例,但它们只是重叠出现。如何使第二个取代第一个 if player_x_coor <= -2750: text = font.render("text 1", True, WHITE) screen.blit(text, [100, 150]) if player_x_coor <= -6310: text = font.render("text 2", True, WHITE) screen.blit(

我有两个文本示例,但它们只是重叠出现。如何使第二个取代第一个

if player_x_coor <= -2750:
        text = font.render("text 1", True, WHITE)
        screen.blit(text, [100, 150])

if player_x_coor <= -6310:
        text = font.render("text 2", True, WHITE)
        screen.blit(text, [100, 150])

如果player_x_coor您需要在写入另一个文本之前擦除第一个文本

请参见类似的问题和

我认为有很多方法可以满足你的需求。最好的办法是:

  • 在缓存中复制当前曲面(无文本)
  • 渲染文本
  • 在缓存的曲面中blit文本

当你在屏幕上画图时,所有已经存在的东西都无法自行清除。你必须用一些颜色来清空屏幕,比如说黑色。一旦屏幕清除上一帧,就可以从下到上重新绘制每个对象

如果在要替换的文本下面有一个简单的正方形,则可以只绘制该正方形(而不是重新绘制整个屏幕),然后绘制新文本。但是如果你不处理少数琐碎的形状,这会变得更复杂

通常,游戏循环用于每秒重绘帧
x
。模式如下:

def game_loop():
    BLACK = (0, 0, 0)

    while True:
        # Do this loop, at maximum, 50 times a second
        clock.tick(50)

        # Clear screen
        screen.fill(BLACK)
        # Draw background
        #      characters
        #      user interface

        # Get user input

你的意思是用纯色填充屏幕吗?如果我只是填充屏幕,那么它会覆盖所有颜色,只显示第二个文本。填充一个矩形区域…如果你给出一个例子,可能会有所帮助,因为你的答案有点误导。你不能只删除文本。但是,您可以用窗口颜色填充文本占据的矩形区域。搜索有关pygame的类似问题可以提供一些(有用的)答案。检查我编辑的答案中的链接。当做