Python affiche le texte avec la police et la couleur?

Existe-t-il un moyen d'afficher du texte sur une fenêtre pygame en utilisant python?

J'ai besoin d'afficher un tas d'informations en direct qui se mettent à jour et qui préfèrent ne pas créer d'image pour chaque personnage dont j'ai besoin.

Puis-je lire du texte à l'écran?

46
demandé sur Cœur 2012-04-09 22:09:49

4 réponses

Oui. Il est possible de dessiner du texte dans 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))
52
répondu veiset 2014-03-03 12:45:55

Vous pouvez utiliser vos propres polices personnalisées en définissant le chemin de la police à l'aide de pygame.police.Police

pygame.font.Font(filename, size): return Font

Exemple:

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

Rend ensuite la police en utilisant fontObj.rendre et blit à une surface comme dans la réponse de veiset ci-dessus. :)

7
répondu Technohazard 2012-04-09 22:38:06

J'ai du code dans mon jeu qui affiche le score en direct. Il est dans une fonction pour un accès rapide.

def texts(score):
   font=pygame.font.Font(None,30)
   scoretext=font.render("Score:"+str(score), 1,(255,255,255))
   screen.blit(scoretext, (500, 457))

Et je l'appelle en utilisant ceci dans ma boucle while:

texts(score)
6
répondu mechanicarts 2012-04-11 14:53:19

J'ai écrit un wrapper, qui mettra en cache les surfaces de texte, seulement re-rendu quand sale. googlecode / ninmonkey / nin.texte / démo /

1
répondu ninMonkey 2012-04-15 21:05:33