pygame如何在不同的矩形上显示不同的文字?
How to display different text on different rectangles in pygame?
我创建了一个 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 个矩形在其中心显示文本。
我该如何解决这个问题?
所有的文字都是重叠绘制的。您需要在不同的位置绘制文本。例如:
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))
如果要在不同时间(计数器)绘制文字,则需要按时间更改文字。例如参见 [=11=]
我创建了一个 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 个矩形在其中心显示文本。
我该如何解决这个问题?
所有的文字都是重叠绘制的。您需要在不同的位置绘制文本。例如:
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))
如果要在不同时间(计数器)绘制文字,则需要按时间更改文字。例如参见 [=11=]