String 在pygame中将整数显示为文本
在pygame中,我试图打印文本“10 x 10”。10作为整数存储在sizeOfGrid变量中。我目前的代码是: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转换成了一个字符串。我会使用类
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
,如前所述。很高兴我能提供帮助!如果您对任何解决方案感到满意,请将问题标记为已解决。