在pygame

时间:2016-11-20 15:01:33

标签: string python-2.7 text integer pygame

在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转换为字符串。

2 个答案:

答案 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))