Pygame importer une police d'écriture

Résolu/Fermé
Alex - Modifié le 31 juil. 2021 à 12:41
yg_be Messages postés 23361 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 29 novembre 2024 - 31 juil. 2021 à 13:25
Bonjour, je n'arrive pas à utiliser une police d'écriture sur mon script. Il s'agit d'une police dont le fichier ttf est dans le même dossier que mon programme python. j'ai réussi à importer la police mais la console me met une erreur: "TypeError: argument 1 must be pygame.Surface, not tuple"

voici mon code pour importer la police d'écriture et afficher un texte:
font = pygame.freetype.Font("Volter.ttf", 40)
screen.blit(font.render("Texte", False, (255, 255, 255)),(120, 900))


Je ne comprend pas de quoi parle l'erreur, et je ne sait pas comment résoudre ce problème.

1 réponse

yg_be Messages postés 23361 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 29 novembre 2024 Ambassadeur 1 556
31 juil. 2021 à 12:43
bonjour,
peux-tu partager du code que nous pouvons tester?
1
voici un code entier:
import pygame
import pygame.freetype
pygame.init()

screen = pygame.display.set_mode((1000, 800))

font = pygame.freetype.Font("Volter.ttf", 30)

while True:
    pygame.display.flip()
    screen.blit(font.render("Texte", False, (255, 255, 255)), (0, 0))
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()

par contre il vous faut un fichier ttf nomé Volter
0
Bonjour,

Je n'ai pas du tout la même erreur que toi...
J'ai celle-ci :

TypeError: fgcolor must be a Color


Et normal puisque si on regarde ce que
render()
demande comme paramètres à fournir via
help()
, on a :

render(...) method of _freetype.Font instance
    render(text, fgcolor=None, bgcolor=None, style=STYLE_DEFAULT, rotation=0, size=0) -> (Surface, Rect)
    Return rendered text as a surface


En fait, ton erreur est dû au fait que cette fonction retourne un tuple surf + rect.
0
yg_be Messages postés 23361 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 29 novembre 2024 1 556 > vortex
31 juil. 2021 à 13:25
si tu remplaces False par (0, 0, 0), tu arrives à l'erreur dont il s'agit.
0
yg_be Messages postés 23361 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 29 novembre 2024 1 556 > Alex
31 juil. 2021 à 13:16
au lieu de
   screen.blit(font.render("Texte", False, (255, 255, 255)), (0, 0)),
je suggère:
    txt,r=font.render("Texte", False, (255, 255, 255))
    screen.blit(txt, (0, 0))
0