Python使用字体&;显示文本;颜色

Python使用字体&;显示文本;颜色,python,pygame,Python,Pygame,有没有一种方法可以使用python在pygame窗口上显示文本 我需要显示一组实时更新的信息,而不是为我需要的每个角色制作图像 我可以在屏幕上显示文字吗?可以。可以在pygame中绘制文本: # initialize font; must be called after 'pygame.init()' to avoid 'Font not Initialized' error myfont = pygame.font.SysFont("monospace", 15) # render text

有没有一种方法可以使用python在pygame窗口上显示文本

我需要显示一组实时更新的信息,而不是为我需要的每个角色制作图像


我可以在屏幕上显示文字吗?

可以。可以在pygame中绘制文本:

# initialize font; must be called after 'pygame.init()' to avoid 'Font not Initialized' error
myfont = pygame.font.SysFont("monospace", 15)

# render text
label = myfont.render("Some text!", 1, (255,255,0))
screen.blit(label, (100, 100))

通过使用设置字体路径,您可以使用自己的自定义字体

例如:

pygame.font.init()
font_path = "./fonts/newfont.ttf"
font_size = 32
fontObj = pygame.font.Font(font_path, font_size)

然后使用fontObj.render和blit将字体渲染到曲面,如上面veiset的答案所示:

我的游戏中有一些显示实时分数的代码。它具有快速访问的功能

def texts(score):
   font=pygame.font.Font(None,30)
   scoretext=font.render("Score:"+str(score), 1,(255,255,255))
   screen.blit(scoretext, (500, 457))
在我的while循环中,我称之为:

texts(score)

我写了一个包装器,它将缓存文本表面,只在脏的时候重新渲染

有两种可能性。在任何一种情况下,PyGame都必须由初始化

导入pygame
pygame.init()
使用模块并创建或对象。将文本和曲面添加到屏幕:

my_font=pygame.font.SysFont(无,50) text_surface=myfont.render(“Hello world!”,True,(255,0,0)) 屏幕。blit(文本表面,(10,10)) 或者使用模块。创建一个或多个对象。a使用文本或直接将文本发送到屏幕:

my_ft_font=pygame.freetype.SysFont('Times New Roman',50) my_ft_font.render_to(屏幕,(10,10),“Hello world!”,(255,0,0)) 另见


最小
pygame.font
示例:

导入pygame
pygame.init()
window=pygame.display.set_模式((500150))
clock=pygame.time.clock()
font=pygame.font.SysFont(无,100)
text=font.render('helloworld',True,(255,0,0))
background=pygame.Surface(window.get\u size())
ts,w,h,c1,c2=50,*window.get_size(),(128,128,128),(64,64,64)
分幅=[(x*ts,y*ts,ts,ts),c1如果(x+y)%2==0,则c2)用于范围内的x((w+ts-1)//ts)用于范围内的y((h+ts-1)//ts)]
对于矩形,瓷砖中的颜色:
pygame.draw.rect(背景、颜色、rect)
运行=真
运行时:
时钟滴答(60)
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
运行=错误
窗口blit(背景,(0,0))
blit(text,text.get_rect(center=window.get_rect().center))
pygame.display.flip()
pygame.quit()
退出()

最小
pygame.freetype
示例:

导入pygame
导入pygame.freetype
pygame.init()
window=pygame.display.set_模式((500150))
clock=pygame.time.clock()
ft_font=pygame.freetype.SysFont('Times New Roman',80)
background=pygame.Surface(window.get\u size())
ts,w,h,c1,c2=50,*window.get_size(),(128,128,128),(64,64,64)
分幅=[(x*ts,y*ts,ts,ts),c1如果(x+y)%2==0,则c2)用于范围内的x((w+ts-1)//ts)用于范围内的y((h+ts-1)//ts)]
对于矩形,瓷砖中的颜色:
pygame.draw.rect(背景、颜色、rect)
运行=真
运行时:
时钟滴答(60)
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
运行=错误
窗口blit(背景,(0,0))
text_rect=ft_font.get_rect('Hello World'))
text_rect.center=window.get_rect().center
ft_font.render_to(窗口,文本_rect.topleft,'Hello World',(255,0,0))
pygame.display.flip()
pygame.quit()
退出()

?好的,如果计算机上没有安装字体,我可以安装字体吗?我不确定,但看起来你可以。根据
font.SysFont
的文档,它从系统字体()加载字体。@maxhud:yes。使用
pygame.font.font(“path/to/font.ttf”,size)
。这会每次创建一个字体对象,这会浪费处理周期。我建议缓存您使用的字体大小。只需定义一个字典,然后执行以下操作:如果self.fonts.get(size)为None:self.fonts[size]=pygame.font.SysFont(None,size)这是如何回答这个问题的?
texts(score)