3

我在使用 pygame 时遇到了麻烦......再次......这些天我发誓我会足够好,不必来这里寻求简单的答案......

无论如何,这次的问题是我试图在屏幕上打印带有变量的文本。

wordfont = pygame.font.SysFont("sans",12)

class Status:

    def __init__(self):
        self.a=30

    def showme(self):
        health = wordfont.render(("Your health: ", self.a,), 1, (255, 9, 12))
        screen.blit(health, (150, 150))

它说它必须是字符串或 unicode ......但也许有某种方式?我再次提醒大家不要纠正我没有问到的任何事情。我知道可能有一些更简单的方法来做这些事情......

4

3 回答 3

1

您将tuple ("Your health: ", self.a,)作为第一个参数传递给render. 我假设应该有一个字符串。

有几种方法可以用变量格式化字符串,一种方法是:

msg = "Your health: {0}".format(self.a)
health = wordfont.render(msg, 1, (255, 9, 12))
于 2013-04-01T14:09:38.063 回答
1
health = wordfont.render(("Your health: ", self.a,), 1, (255, 9, 12))

应该

health = wordfont.render("Your health: {0}".format(self.a), 1, (255, 9, 12))

或者

health = wordfont.render("Your health: %s" % self.a), 1, (255, 9, 12))

("Your health: ", self.a,)是一个元组。通过传递一个字符串,您可以解决您的问题。

请参阅此处以了解我所做的...

于 2013-04-01T14:09:39.903 回答
1

你想发送一个字符串而不是一个元组来作为第一个参数呈现:

health = wordfont.render("Your health: " + str(self.a), 1, (255, 9, 12))
于 2013-04-01T14:10:03.530 回答