【问题标题】:How to display different text on different rectangles in pygame?如何在pygame中的不同矩形上显示不同的文本?
【发布时间】:2021-08-23 02:26:12
【问题描述】:

我创建了一个 Pygame 应用程序,其中有大约 25 个矩形。我想在矩形的中心显示 25 个不同的文本值(这是一个数值,但在str 中进行了类型转换-我提到这一点是因为我相信我们需要在第一个参数中使用字符串)。我已经导入了一个包含数据的 csv 文件。

def draw_point(text, pos):
    font = pygame.font.SysFont(None, 20)
    img = font.render(text, True, (0,0,0))
    window.blit(img, pos)

def loop_func():
    count = 0
    while count < total_length:
        data = data_pass[count] # data_pass is an empty list
        pygame.draw.rect(window, (255,255,255), (20, 20, width, height)) 
        draw_point(data, (width // 2, height // 2))
    

根据loop_func() 函数,变量'data' 应该在每个循环中更新为一个新值,并且它正在更新,因为我检查了print() 函数。但是当我将变量传递给draw_point() 函数时,该函数似乎没有显示所需的值。这是我的输出:

它实际上是 25 个具有几乎相似背景颜色的不同矩形。我遵循 Pygame 教程中的所有内容,但我得到了一个非常难看的字体,在 25 个矩形中,只有 1 个矩形在其中心显示文本。

我该如何解决这个问题?

【问题讨论】:

    标签: python pygame render


    【解决方案1】:

    所有的文本都绘制在彼此的顶部。您需要在不同的位置绘制文本。例如:

    def loop_func():
        count = 0
        while count < total_length:
            data = data_pass[count] # data_pass is an empty list
            pygame.draw.rect(window, (255,255,255), (20, 20, width, height)) 
            draw_point(data, (width // 2, height // 2 + count * 20))
    

    如果要在不同的时间(计数器)绘制文本,则需要按时间更改文本。参见例如How to display dynamically in Pygame?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-22
      • 2021-10-14
      • 1970-01-01
      相关资源
      最近更新 更多