Python:TypeError:text必须是unicode或bytes

时间:2014-07-05 10:41:56

标签: python list pygame typeerror

我正试图在pygame中将列表blit到表面,但是行prompts = contactFont.render(fields, True, (171,0,0))导致上述错误,我不知道为什么。

class AddPage(Page):

    ...

    def textInputs(self):
        fields = ["First Name:", "Last Name:", "Address:", "Mobile:", "Telephone:", "Email:"]
        contactFont = pygame.font.SysFont("trebuchet ms", 18)
        y = 20

        for i in fields:
            #Error here
            prompts = contactFont.render(fields, True, (171,0,0))
            self.intermediate2.blit(prompts, (5,y))
            pygame.draw.line(self.intermediate2, (0,0,0), (5, (y+20)), (320, (y+20)), 1)
            y += 30

我尝试使用fields[x.encode('utf-8') for x in fields]列表编码为unicode但是没有发生什么,是什么给出了?

1 个答案:

答案 0 :(得分:2)

Font.render()字符串作为第一个参数,但您将传入整个fields列表。

我想传递i,我认为:

for i in fields:
    prompts = contactFont.render(i, True, (171,0,0))

我在这里使用比i更具描述性的名称;或许fieldprompt是更好的选择。