Partage
  • Partager sur Facebook
  • Partager sur Twitter

Suprimer une image d'un canvas.

Sujet résolu
    29 novembre 2010 à 2:10:10

    Bonjours, bonjours...

    En ce moment j'essaye de faire des animations avec des sprites.
    Tout marche bien et tout, sauf que, les images précédente reste dans le canvas! :-°
    Resultat le personnage se dédouble :lol:

    EDIT:
    Désolé pour le manque de précision(les forums ont planté quand je rédigait mon topic).

    Suite du topic...
    ...Donc j'ai utilisé une grosse technique de porc : mettre une image blanche entre chaque mouvement :D
    -J'utilise la bibliothèque Tkinter.(python3)

    Comment faire, donc, pour suprimer une image d'un canvas?
    Merci d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
      29 novembre 2010 à 16:33:06

      Bonjour,
      Il faudrait que tu précises quelle bibliothèque tu utilises, pour que quelqu'un puisse t'aider.
      • Partager sur Facebook
      • Partager sur Twitter
        29 novembre 2010 à 19:44:19

        Salut,

        Chaque fois que tu créée un objet, on te retourne une valeur, il en est de même avec des méthodes du genre create_line, create_oval, etc... :

        #!/usr/bin/env python
        #-*-coding:utf8-*-
        
        import Tkinter as tk
        
        root = tk.Tk()
        
        obj1 = tk.Canvas(width = 300, height = 300, bg = "green")
        obj1.pack()
        
        tab = [obj1.create_line(100,0,100,300),\
                obj1.create_line(200,0,200,300),\
                obj1.create_line(0,100,300,100),\
                obj1.create_line(0,200,300,200)]
        
        print obj1
        print tab
        
        obj1.delete(1) # Suppression de la 1e ligne verticale
        
        root.mainloop()
        


        Ensuite tu peux utiliser la méthode objet.delete(valeur) pour supprimer le contenu d'un widget.

        J'avais fait un script qui teste la destruction d'objet avec Tkinter. C'est la piste que j'avais retenu à l'époque.

        Par contre, j'ai essayé de faire un root.delete(obj1) en espérant supprimer mon fond vert, et ça ne semble pas fonctionner.

        Bonne continuation.
        • Partager sur Facebook
        • Partager sur Twitter
          29 novembre 2010 à 20:49:59

          Si tu veux déplacer un objet tu n'es pas obliger de le supprimer. Le canvas de Tkinter est plus haut niveau que pygame.
          Tu peux utiliser Canvas.move ( tagOrId, xAmount, yAmount ).
          Tu as liste des méthode du Canvas ici.
          • Partager sur Facebook
          • Partager sur Twitter
            29 novembre 2010 à 20:53:16

            Merci de ta réponse, mais de mon côté je suis un peu perdu...

            Voici mon code:
            from tkinter import *
            
            class Annimation_Abe():
                
                def __init__(self):
                    self.y = 0
                    self.x = 0
                    self.coordoné_x, self.coordoné_y = 150, 150
            
                    self.Canvas = Canvas(fen, bg='white', height=295, width=700)
                    self.Canvas.pack()
            
                    self.Abe_repos = PhotoImage(file = 'Abe_repos.gif')                       #Abe au repos
                    self.Canvas.create_image(self.coordoné_x,self.coordoné_y, image=self.Abe_repos)#
                    
                    self.Abe_marche1 = PhotoImage(file = 'Abe_marche1.gif')# Images de Marche
                    self.Abe_marche2 = PhotoImage(file = 'Abe_marche2.gif')#
                    self.Abe_marche3 = PhotoImage(file = 'Abe_marche3.gif')#
                    self.Abe_marche4 = PhotoImage(file = 'Abe_marche4.gif')#
                    self.blanc = PhotoImage(file = 'blanc.gif')
            
                    
                    self.Liste = [self.Abe_marche1, self.Abe_marche2,  # liste des images de marche
                                  self.Abe_marche3, self.Abe_marche4]
            
                def repos(self):
                    self.Canvas.create_image(self.coordoné_x,self.coordoné_y, image=self.blanc)
                    self.Canvas.create_image(self.coordoné_x,self.coordoné_y, image=self.Abe_repos)
                    
                def marche(self, Event):
                    self.x += 1 
                    if(self.x == 2):
                      self.x = 0
                      self.Canvas.create_image(self.coordoné_x,self.coordoné_y, image=self.blanc)
                      self.Canvas.create_image(self.coordoné_x,self.coordoné_y, image=self.Liste[self.y])
            
                      self.coordoné_x += 10
                      self.y+=1
            
                      if(self.y == 4):
                          self.y = 0
            
                      fen.after(1500, self.repos)
            
            
            
                          
            ################################
            
            fen = Tk()
            fen.title("Moddworld")
            
            Anime = Annimation_Abe()
            fen.bind('<Right>', Anime.marche)
            
            
            fen.mainloop()
            


            Bien evidement n'essayez pas de le testé chez vous :p
            C'est les ligne 27 et 34 qui affiche le blanc entre chaque mouvement du personnage...
            Mais merci de votre aide!
            • Partager sur Facebook
            • Partager sur Twitter
              29 novembre 2010 à 21:05:54

              Tout d'abord tu ne dois pas mettre de caractères accentué dans tes variables.
              La méthode self.Canvas.create_image retourne l'id de l'image dans le canvas. Cette grâce à cet id que tu pourras le suprimer.

              self.itemRepos = self.Canvas.create_image(self.coord_x,self.coord_y, image=self.Abe_repos)
              ...
              self.Canvas.delete(self.itemRepos)
              
              • Partager sur Facebook
              • Partager sur Twitter

              Suprimer une image d'un canvas.

              × 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