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

Tkinter Python Discussion :

Comment effacer dynamiquement un item du Canvas ?


Sujet :

Tkinter Python

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 3
    Par défaut Comment effacer dynamiquement un item du Canvas ?
    Bonjour,
    Je voudrais dessiner des objets dans un Canvas et puis les effacer dynamiquement à la suite d’un événement (par exemple click sur un bouton)

    Exemple de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    from Tkinter import *
     
    def delete(item):
        w.delete(master,item)
     
    master =Tk()
    w=Canvas(master, width=200,height=100)
    w.pack()
    i=w.create_line(0,0,200,100, fill="red")
    B=Button(text="del", command=delete(i)).pack()
     
    mainloop()

    Problème avec ce code :
    La ligne rouge est directement effacée à l’affichage de la fenêtre et moi je voudrais qu’elle s’efface quand on clique sur DEL
    Quelqu’un a la solution?

  2. #2
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Normal : tu donne i a command=delete
    Si tu donne une infortation à un command d'un widget il est executer à la création.

    Exemple :
    command=sys.exit(0) te fais le sys.exit dés la création.

    Utilise les tags plutôt dans ton create_line.
    De plus cela te permet de ne pas utiliser i = mais d'identifier à partir du tag (find_withtag)

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 3
    Par défaut
    merci pour ta reponse, mais pourrais tu me faire un exemple car pr moi ça ne marche pas.
    code modifié:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    from Tkinter import *
     
    def delete(tag):
        w.delete(master,tag)
     
    master =Tk()
    w=Canvas(master, width=200,height=100)
    w.pack()
    i=w.create_line(0,0,200,100, fill="red", tags="one")
     
    B=Button(text="del", command=delete("one")).pack()
     
    mainloop()

  4. #4
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Allez, vite fais avant d'aller manger

    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
    from Tkinter import *
     
    def TraiteR():
        if w.find_withtag('un'):
            delete('un')
        else:
            w.create_line(0,0,200,100, fill="red", tags="un")
    def TraiteV():
        if w.find_withtag('deux'):
            delete('deux')
        else:
           w.create_line(0,0,100,100, fill="blue", tags="deux") 
     
    def TraiteJ():
        if w.find_withtag('trois'):
            delete('trois')
        else:
            w.create_line(0,0,100,200, fill="yellow", tags="trois")
     
    def delete(MonTag):
        w.delete(w.find_withtag(MonTag))
     
    master =Tk()
    w=Canvas(master, width=200,height=100)
    w.pack()
    w.create_line(0,0,200,100, fill="red", tags="un")
    w.create_line(0,0,100,100, fill="blue", tags="deux")
    w.create_line(0,0,100,200, fill="yellow", tags="trois")
    Button(text="Rouge", command=TraiteR).pack(side='left')
    Button(text="Vert", command=TraiteV).pack(side='left')
    Button(text="Jaune", command=TraiteJ).pack(side='left')
    Button(text="Quitter", command=quit).pack(side='left')
     
    mainloop()

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 3
    Par défaut

    Merci et bonne appetit

Discussions similaires

  1. Comment créer une colonne dynamique d'items ?
    Par Masamunai dans le forum VB.NET
    Réponses: 19
    Dernier message: 04/12/2010, 19h11
  2. Réponses: 2
    Dernier message: 01/09/2008, 07h15
  3. Comment effacer le dessin dans un Canvas ?
    Par RoM_CoOl dans le forum Langage
    Réponses: 11
    Dernier message: 29/11/2007, 16h11
  4. Comment effacer un Tick sur une TrackBar ?
    Par ZeImp dans le forum Composants VCL
    Réponses: 2
    Dernier message: 19/08/2003, 21h39
  5. Comment effacer des Items d'un TListView ?
    Par boyerf dans le forum Composants VCL
    Réponses: 4
    Dernier message: 11/11/2002, 10h19

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