Partage
  • Partager sur Facebook
  • Partager sur Twitter

Les importations depuis un autre fichier.

Sujet résolu
    2 août 2010 à 18:49:43

    (Re)Bonjour,

    tout est indiqué dans le titre !
    En effet, j'essaye dès à présent d'importer une classe située dans mon fichier 'truc.py' dans un autre fichier 'essai.py'.

    Dans mon fichier truc.py:
    Il y a ma classe 'Perso()'
    En bas de celle-ci j'ai mis


    if __name__ == "__main__":
        Perso()
    


    Dans mon fichier essai.py:
    import pygame, os
    from pygame.locals import *
    from truc import *
    


    J'obtiens les erreurs suivantes:

    C:\Users\utilisateur>Documents\Logiciels\Python\fichier\essai.py
    Traceback (most recent call last):
      File "C:\Users\utilisateur\Documents\Logiciels\Python\fichier\essai.py", line
    54, in <module>
        joueur.bouge()
      File "C:\Users\utilisateur\Documents\Logiciels\Python\fichier\truc.py", line 3
    8, in bouge
        if(event.type is pygame.KEYDOWN):
    NameError: global name 'event' is not defined




    J'ai pourtant bien respecté ce que dit le tutoriel. De ce fait, tout doit être bon, donc pourquoi cette erreur ?

    P.S: Mes deux fichiers se trouvent dans le même répertoire

    C:\Documents\Logiciels\Python\fichier


    Merci d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
      2 août 2010 à 19:22:34

      Euh, l'erreur ne parle absolument pas de truc.py mais de l'objet event qui n'est pas défini. Pourrait-on voir essai.py ?

      Déjà, supprime les parenthèses dans la condition située à la ligne 38, elles sont inutiles. ;)
      Ensuite, vérifie que dans la fonction dans laquelle tu te trouves à la ligne 38, on a bien accès à l'objet event. Est-il bien transmis dans les paramètres par exemple ?

      Mais bon, ce serait beaucoup plus facile si on avait essai.py. :)
      • Partager sur Facebook
      • Partager sur Twitter
        2 août 2010 à 19:49:42

        Ok, donc voici mes fichiers:

        Truc.py

        import pygame, os
        from pygame.locals import *
        
        class Perso(object):
            """
            Charge les images
            Fait bouger le perso
            Blit, rafraichit l'ecran/perso
            """
            def __init__(self):
                """
                Charge les images ainsi
                que les données nécessaires
                """
                self.name = "Pseudo_1"
                
                self.chemin = os.path.join("C:", "Documents\\Logiciels\\Python\\fichier\\gui\\")
                self.monImageB = pygame.image.load(self.chemin + "teteB.PNG") #Tete bas
                self.monImageH = pygame.image.load(self.chemin + "teteH.PNG") #Tete haut
                self.monImageG = pygame.image.load(self.chemin + "teteG.PNG") #Tete Gauche
                self.monImageD = pygame.image.load(self.chemin + "teteD.PNG") #Tete Droite
        
                #On cree un rect, pour retenir la pos
                self.imageAct  = self.monImageB
                self.rectangle = self.imageAct.get_rect()
                self.rectangle.topleft = (60, 60) 
            
            #
            ##Les methodes
            #
            def bouge(self):
                """
                Permet de faire bouger
                le joueur dans la
                direction voulue
                """
                
                if event.type is pygame.KEYDOWN:
                                                            ########################
                    if event.key == pygame.K_UP:            #Ne pas oublier        #
                        self.imageAct = self.monImageH      #de changer imageAct   #
                        self.rectangle.move_ip(0, -10)      #pour que la bonne tête#
                                                            #soit blité            #
                    elif event.key == pygame.K_DOWN:        ########################
                        self.imageAct = self.monImageB  
                        self.rectangle.move_ip(0, 10)             
        
                    elif event.key == pygame.K_RIGHT:   
                        self.imageAct = self.monImageD  
                        self.rectangle.move_ip(10, 0)             
        
                    elif event.key == pygame.K_LEFT:    
                        self.imageAct = self.monImageG  
                        self.rectangle.move_ip(-10, 0)                 
        
                        
            def menage(self, screen):
                """
                Remplie le rect d'une couleur
                Blit le perso
                Met à jour l'ecran
                """
                screen.blit(self.imageAct, self.rectangle)
                pygame.display.flip()
                screen.fill((255, 255, 255), self.rectangle)
        
        
        if __name__ == "__main__":
            Perso()
        


        essai.py

        ################################
        ## Les Modules Importés:  (3) ##
        #
        import pygame, os
        from pygame.locals import *
        from truc import *
        
        ################################
        ## Les classes & fonctions:   ##
        #
        
                         
                
        ################################
        ## Les diférrentes variables: ##
        #
        continuer = True
        horloge = pygame.time.Clock()
        
        #joueur est du type Perso()
        joueur = Perso()
        
        
        ################################
        ## Programme Principale:      ##
        #
        pygame.init()
        
        #Une surface pour l'ecran
        screen = pygame.display.set_mode((200, 200))
        pygame.display.set_caption("boum")
        
        screen.fill((255, 255, 255))
        joueur.menage(screen)
        
        while(continuer):
            horloge.tick(20) #Pour consommer moin de CPU
            
            for event in pygame.event.get():
                
                if event.type is pygame.QUIT:
                    continuer = False
                    
                elif(event.type is pygame.KEYDOWN):  
                    joueur.bouge()
                    joueur.menage(screen)
        



        Les voici :) .
        • Partager sur Facebook
        • Partager sur Twitter
          2 août 2010 à 20:34:27

          import pygame, os
          from pygame.locals import *
          
          class Perso(object):
              """
              Charge les images
              Fait bouger le perso
              Blit, rafraichit l'ecran/perso
              """
              def __init__(self):
                  """
                  Charge les images ainsi
                  que les données nécessaires
                  """
                  self.name = "Pseudo_1"
                  
                  self.chemin = os.path.join("C:", "Documents\\Logiciels\\Python\\fichier\\gui\\")
                  self.monImageB = pygame.image.load(self.chemin + "teteB.PNG") #Tete bas
                  self.monImageH = pygame.image.load(self.chemin + "teteH.PNG") #Tete haut
                  self.monImageG = pygame.image.load(self.chemin + "teteG.PNG") #Tete Gauche
                  self.monImageD = pygame.image.load(self.chemin + "teteD.PNG") #Tete Droite
          
                  #On cree un rect, pour retenir la pos
                  self.imageAct  = self.monImageB
                  self.rectangle = self.imageAct.get_rect()
                  self.rectangle.topleft = (60, 60) 
              
              #
              ##Les methodes
              #
              def bouge(self):
                  """
                  Permet de faire bouger
                  le joueur dans la
                  direction voulue
                  """
                  
                  if event.type is pygame.KEYDOWN:
                                                              ########################
                      if event.key == pygame.K_UP:            #Ne pas oublier        #
                          self.imageAct = self.monImageH      #de changer imageAct   #
                          self.rectangle.move_ip(0, -10)      #pour que la bonne tête#
                                                              #soit blité            #
                      elif event.key == pygame.K_DOWN:        ########################
                          self.imageAct = self.monImageB  
                          self.rectangle.move_ip(0, 10)             
          
                      elif event.key == pygame.K_RIGHT:   
                          self.imageAct = self.monImageD  
                          self.rectangle.move_ip(10, 0)             
          
                      elif event.key == pygame.K_LEFT:    
                          self.imageAct = self.monImageG  
                          self.rectangle.move_ip(-10, 0)                 
          
                          
              def menage(self, screen):
                  """
                  Remplie le rect d'une couleur
                  Blit le perso
                  Met à jour l'ecran
                  """
                  screen.blit(self.imageAct, self.rectangle)
                  pygame.display.flip()
                  screen.fill((255, 255, 255), self.rectangle)
          
          
          if __name__ == "__main__":
              Perso()
          


          Regarde les lignes surlignées : d'où sort event ? Il faudrait au minimum le passer en tant que paramètre à bouge.
          • Partager sur Facebook
          • Partager sur Twitter
            2 août 2010 à 20:40:58

            Mince, pourquoi n'y ais-je pas pensé. En plus Rastagong me l'a dit...

            Merci à vous deux, le sujet est résolu.
            • Partager sur Facebook
            • Partager sur Twitter

            Les importations depuis un autre fichier.

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown