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.sysfontone,50 text\u surface=myfont.renderHello world!,对,255,0,0 screen.blittext_曲面,10,10 或者使用模块。创建一个或多个对象。a使用文本或直接将文本发送到屏幕:

my_ft_font=pygame.freetype.SysFont'Times New Roman',50 my_ft_font.render_to Screen,10,10,你好,世界!,255, 0, 0 另见

最小pygame.font示例:

导入pygame pygame.init window=pygame.display.set_mode500150 clock=pygame.time.clock font=pygame.font.sysfontone,100 text=font.render'Hello World',True,255,0,0 background=pygame.Surfacewindow.get\u size ts,w,h,c1,c2=50,*window.get_size,128,128,64,64,64 tiles=[x*ts,y*ts,ts,ts,c1如果x+y%2==0,则c2表示范围内的x+ts-1//ts表示范围内的y+ts-1//ts] 对于矩形,瓷砖中的颜色: pygame.draw.rect背景、颜色、rect 运行=真 运行时: 时钟滴答滴答 对于pygame.event.get中的事件: 如果event.type==pygame.QUIT: 运行=错误 窗口。闪电背景,0,0 window.blittext,text.get\u rectcenter=window.get\u rect.center pygame.display.flip pygame.退出 出口 最小pygame.freetype示例:

导入pygame 导入pygame.freetype pygame.init window=pygame.display.set_mode500150 clock=pygame.time.clock ft_font=pygame.freetype.SysFont'Times New Roman',80 background=pygame.Surfacewindow.get\u size ts,w,h,c1,c2=50,*window.get_size,128,128,64,64,64 tiles=[x*ts,y*ts,ts,ts,c1如果x+y%2==0,则c2表示范围内的x+ts-1//ts表示范围内的y+ts-1//ts] 对于矩形,瓷砖中的颜色: pygame.draw.rect背景、颜色、rect 运行=真 运行时: 时钟滴答滴答 对于pygame.event.get中的事件: 如果event.type==pygame.QUIT: 运行=错误 窗口。闪电背景,0,0 text_rect=ft_font.get_rect'Hello World' text_rect.center=window.get_rect.center ft_font.render_towindow,text_rect.topleft,'Hello World',255,0,0 pygame.display.flip pygame.退出 出口
好的,如果计算机上没有安装字体,我可以安装字体吗?我不确定,但看起来你可以。根据font.SysFont的文档,它从系统字体加载字体。@maxhud:是。使用pygame.font.Fontpath/to/font.ttf,size。这样每次都会创建一个字体对象,这会浪费处理周期。我建议缓存您使用的字体大小。只需定义一个字典,然后执行以下操作:如果self.fonts.getsize为None:self.fonts[size]=pygame.font.sysfontone,size这是问题的答案吗?
texts(score)