2016-11-20 44 views
0

在pygame中,我試圖打印文本'10 x 10'。 10以sizeOfGrid變量中的整數存儲。我目前的代碼是:在pygame中顯示一個整數作爲文本

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轉換爲字符串。

回答

1

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)) 
+0

這個方法我試過和它的工作我第一次運行它,但所有其他的時間它在我的代碼另一部分導致了錯誤並造成pyscripter崩潰。出現錯誤的代碼是第一行「text = font.render(」網格大小:「,1,(10,10,10)) textpos =(35,165) screenDisplay.blit(text,textpos )',它返回錯誤'pygame.error:文字有零寬度' –

+0

完美!零文本寬度錯誤與pygame的模塊完全不同。一種解決方案是使用'pygame.display.quit'而不是'pygame.quit'來退出顯示(不是pygame),如[這裏]解釋的(http://stackoverflow.com/questions/20850868/text-has-zero -width-錯誤後重新初始化-pygame的顯示器)。 – internetional

+0

它的工作原理!謝謝! –

0

我會用這樣的

screenDisplay.blit(font.render("{0}x{0}".format(sizeOfGrid), True, (10, 10, 10)), (32, 210)) 

font.render預計第一arguement一個字符串,您提供的元組。

注:我使用{0}x{0},因爲這兩個值都是sizeOfGrid。

相關問題