IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Programmation multimédia/Jeux Python Discussion :

[pygame] Afficher du texte (long)


Sujet :

Programmation multimédia/Jeux Python

  1. #1
    Membre régulier

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 133
    Points : 113
    Points
    113
    Par défaut [pygame] Afficher du texte (long)
    Bonsoir, je suis en train de développer une application avec python et pygame.
    A un moment donné, je souhaite afficher un texte à l'utilisateur, idéalement dans la fenêtre pygame, ou sinon ouvrir une autre fenêtre pour afficher ce texte. Je n'ai actuellement pas trouvé de solution, d'où ma présence ici ...

    J'ai tenté d'utiliser pygtk, mais apparament ça entre en conflit avec pygame, les deux fonctionnent bien séparément mais malheureusement lorsque j'active les deux dans mon programme, ça plante (impossible de fermer la fenêtre gtk).

    Quelles solutions me reste-t-il à votre avis ?

    J'ai pensé en dernier recours décomposer mon texte en sprites pour l'afficher mot par mot et calculer la longueur des sprites pour faire des retours à la ligne. C'est moche non ?

  2. #2
    Membre régulier

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 133
    Points : 113
    Points
    113
    Par défaut
    Bon finalement j'ai utilisé la méthode d'affichage mot par mot avec calcul pour les retours à la ligne.
    Ca ressemble à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
      def AfficherTexte(self): #c'est une méthode d'une classe qui gère ça
        fond=(255,193,172)
        couleur=(42,56,255)
        pygame.draw.rect(self.Ecran,fond,(0,0,990,660)) # j'efface l'écran
        police=pygame.font.Font("Polices/quand_tu_dors.otf",40)
        x=10 # je laisse des marges à gauche
        y=10 # et en haut
        while len(self.Texte)>0: # c'est une liste de lignes que je parcours
          ligne=self.Texte[0].rstrip('\n\r')
          ligne=ligne.decode('utf-8')
          del self.Texte[0]
          if ligne=="NEWPAGE":
            x=10
            y=10
            br=False
            for event in pygame.event.get():
              pass # juste pour vider les événements en file d'attente
            while not(br): # j'attends un clic pour passer à la page suivante
              pygame.display.flip()
              self.Temps.tick(30)
              for event in pygame.event.get():
                if event.type==MOUSEBUTTONUP:
                  pygame.draw.rect(self.Ecran,fond,(0,0,990,660))
                  ligne=self.Texte[0].rstrip('\n\r')
                  ligne=ligne.decode('utf-8')
                  del self.Texte[0]
                  br=True
                  break
          mots=ligne.split(" ") # je sépare les mots
          for mot in mots:
            img=police.render(mot,1,couleur,fond)
            w=img.get_width()
            if x+w>980: # je regarde si c'est trop large
              y+=img.get_height() # je descend d'une ligne
              x=10 # et je reviens à gauche
            self.Ecran.blit(img,(x,y))
            x+=8+w # 8 pixels par espace
          y+=img.get_height()
          x=10
        for event in pygame.event.get():
          pass # vider
        while 1: # on attend que la dernière page soit lue
          pygame.display.flip()
          self.Temps.tick(30)
          for event in pygame.event.get():
            if event.type==MOUSEBUTTONUP:
              return
    voilà si ça peut inspirer quelqu'un par la suite, c'est finalement pas si dégueulasse que je l'imaginais.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XSL-FO] [FOP] afficher du texte le long d'une image
    Par guigui5931 dans le forum XSL/XSLT/XPATH
    Réponses: 9
    Dernier message: 02/12/2010, 12h02
  2. [CR 8] Impossible d'afficher texte long!
    Par js8bleu dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 22/02/2010, 23h41
  3. Réponses: 2
    Dernier message: 30/11/2008, 17h26
  4. procédure stockée : afficher un texte très long
    Par trungsi dans le forum Adaptive Server Enterprise
    Réponses: 7
    Dernier message: 11/09/2008, 17h03
  5. afficher un texte assez long dans un editeur
    Par FstDsi dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 06/06/2008, 02h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo