这是我的全部节目(只是练习用的):
import pygame
pygame.init()
while True:
for event in pygame.event.get():
if event.type==pygame.QUIT:
pygame.quit()
break
pygame.font.Font.render('Hello world', 1, (255, 100, 100))产出如下:
Traceback (most recent call last):
File "D:\Download\unim.py", line 8, in <module>
pygame.font.Font.render('Hello world', 1, (255, 100, 100))
TypeError: descriptor 'render' requires a 'pygame.font.Font' object but received a 'str'在游戏中,字型是可选的,但它会改善游戏。
发布于 2014-02-11 16:48:53
你需要首先创建你的字体。
myfont = pygame.font.SysFont(None,10) # use default system font, size 10然后你就可以
mytext = myfont.render('Hello world', 1, (255, 100, 100))最后,您需要将mytext模糊到您的图面,并更新它以显示文本。
看看这个游戏文档:http://www.pygame.org/docs/ref/font.html
编辑:如果这是完整的脚本,您需要在事件循环之前初始化一个显示:
screen = pygame.display.set_mode((300,300)) # create a 300x300 display然后,您可以将您的文本添加到屏幕上:
screen.blit(mytext, (0,0)) # put the text in top left corner of screen
pygame.display.flip() # update the display由于文本是静态的,所以它也不需要在while True:循环中。您可以先显示文本。如果要根据事件更改文本,则应在循环中处理。
要回答注释部分中的错误消息,请编辑2,问题是在您发出pygame.quit()命令之后,仍有一些游戏命令正在运行。之所以这样做,是因为您的break命令只中断了for event...循环,但是您仍然在while True:循环中,所以blit命令仍然试图运行。
你可以这样做:
import pygame
pygame.init()
screen = pygame.display.set_mode((1200,600))
myfont = pygame.font.SysFont(None, 30)
mytext = myfont.render('Hello world', 1, (255, 100, 100))
running = True
while running:
for event in pygame.event.get():
if event.type==pygame.QUIT:
running=False
screen.fill((255, 255, 255))
screen.blit(mytext, (600, 300))
pygame.display.flip()
pygame.quit()这应该有效,因为主循环依赖于running是否为真。点击退出将此设置为false,因此脚本干净地退出while循环,然后运行pygame.quit()命令。
https://stackoverflow.com/questions/21707337
复制相似问题