String 在pygame中将整数显示为文本

String 在pygame中将整数显示为文本,string,python-2.7,text,integer,pygame,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 当我运行程序时,它返回错误异常。类型错误:文本必须是字符串或unicode。我不理解这个错误或者是什么错误,因为我已经将10转换成了一个字符串。我会使用类

在pygame中,我试图打印文本“10 x 10”。10作为整数存储在sizeOfGrid变量中。我目前的代码是:

text = font.render((str(sizeOfGrid),'x',str(sizeOfGrid)), 1, (10, 10, 10))
textpos = (32,210)
screenDisplay.blit 

当我运行程序时,它返回错误
异常。类型错误:文本必须是字符串或unicode
。我不理解这个错误或者是什么错误,因为我已经将10转换成了一个字符串。

我会使用类似的东西

screenDisplay.blit(font.render("{0}x{0}".format(sizeOfGrid), True, (10, 10, 10)), (32, 210))
font.render
要求第一个参数是字符串,您提供的是元组


注意:我使用了
{0}x{0}
,因为两个值都是sizeOfGrid。

font.render的第一个参数必须是数据类型字符串或unicode。你可能只需要改变这一点。除了
(str(sizeOfGrid)、'x',str(sizeOfGrid)
之外,您还可以编写如下代码
%d x%d”%tuple([sizeOfGrid]*2)

%d x%d”
部分是字符串格式,我们在其中要求两位参数。对于元组示例
(4,4)
,这将为我们提供字符串
“4 x 4”

要向字符串添加参数,我们使用模加参数,即
%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))

我尝试了这种方法,第一次运行它时它就起作用了,但每隔一次它就会在我的代码的另一部分中导致错误,并导致pyscripter崩溃。产生错误的代码是
text=font.render(“网格大小:”,1,(10,10,10))textpos=(35165)screenDisplay.blit(text,textpos)的第一行
然后返回错误“pygame.error:文本具有零宽度”完美!零文本宽度错误与pygame的模块完全不同。一种解决方案是退出显示(而不是pygame)使用
pygame.display.quit
而不是
pygame.quit
,如前所述。很高兴我能提供帮助!如果您对任何解决方案感到满意,请将问题标记为已解决。