2015-03-02 395 views
0

我在查找错误时遇到了一些问题。当我尝试运行代码我得到以下输出:TypeError:文本必须是unicode或字节

Traceback (most recent call last): 
    File "C:/Users/PC/Documents/Python_Projects/Segundo Teste/Game.py", line 133, in <module> 
    set_message(message) 
    File "C:/Users/PC/Documents/Python_Projects/Segundo Teste/Game.py", line 61, in set_message 
    message = font.render(text, True, black, white) 
TypeError: text must be a unicode or bytes 

这些代码行:

if message != previous_message: 
    set_message(message) --> line 133 

def set_message(text): 
    global message, previous_messsage 
    message = font.render(text, True, black, white) --> line 61 
    previous_messsage = message 
+4

你为什么从'font.render()'设置'previous_messsage'?它与** previous_message不一样(注意'message'中's'字符的数目)。 – 2015-03-02 21:28:16

+2

无论您传递给set_message(),都不能是字符串。尝试在方法开头打印:'print“消息:'{}'({})”。格式(消息,类型(消息))' – 2015-03-02 21:28:45

+0

'font'是什么?这是Pygame代码吗? – 2015-03-02 21:29:06

回答

0

Font.render() method回报pygame的Surface实例。从文档:

render()
Return rendered text as a surface
render(text, fgcolor=None, bgcolor=None, style=STYLE_DEFAULT, rotation=0, size=0) -> (Surface, Rect)

Returns a new Surface , with the text rendered to it in the color given by ‘fgcolor’.

您试图呈现Surface实例;它不是文本而不是unicode。目前尚不清楚你期望previous_message是什么,但你正在做什么不会工作。

我在这里忽略了你的变量错字; previous_messsageprevious_message的名称不同;后者拼写正确,但您使用前者set_message()

相关问题