在pygame中,我正在尝试打印文本' 10 x 10'。 10在sizeOfGrid变量中存储为整数。我目前的代码是:
text = font.render((str(sizeOfGrid),'x',str(sizeOfGrid)), 1, (10, 10, 10))
textpos = (32,210)
screenDisplay.blit
当我运行程序时,它返回错误exceptions.TypeError: text must be string or unicode
。我没有理解这个错误或错误,因为我已将10转换为字符串。
答案 0 :(得分:1)
我会用这样的东西
screenDisplay.blit(font.render("{0}x{0}".format(sizeOfGrid), True, (10, 10, 10)), (32, 210))
font.render
期望第一个争论是一个字符串,你提供一个元组。
注意:我使用了{0}x{0}
,因为这两个值都是sizeOfGrid。
答案 1 :(得分:1)
font.render
的第一个参数必须是数据类型字符串或unicode。你可能只需要改变它。而不是(str(sizeOfGrid),'x',str(sizeOfGrid)
你可能会写出类似的东西
"%d x %d" % tuple([sizeOfGrid]*2)
。
"%d x %d"
部分是字符串格式,我们要求两位数的参数。使用元组样本(4, 4)
,这将为我们提供字符串"4 x 4"
。
要为字符串添加参数,我们使用modulo后跟参数,即% tuple([sizeOfGrid]*2)
[sizeofGrid]*2
为[10, 10]
且tuple([sizeOfGrid]*2)
为(10, 10)
,这恰好是我们的两位数论点。您可以像这样使用它:
text = font.render("%d x %d" % tuple([sizeOfGrid]*2), 1, (10, 10, 10))