Pygame importer une police d'écriture

Résolu
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

  1. Contributeur
    bonjour,
    peux-tu partager du code que nous pouvons tester?
    1
    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
    2. @AlexBonjour,

      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
    3. Contributeur
      @Alexau 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
    4. Contributeur
      @vortexsi tu remplaces False par (0, 0, 0), tu arrives à l'erreur dont il s'agit.
      0