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

Python Discussion :

[DEB] Pb avec delete() [Python 3.X]


Sujet :

Python

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2012
    Messages : 112
    Par défaut [DEB] Pb avec delete()
    Bonsoir à tous.
    Voici un code qui déplace une image de 40x40 pixels en cliquant sur un bouton.(il n'y a qu'un seul bouton pour ne pas alourdir).
    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
    from tkinter import *
    from random import*
    #Fonction efface coccinelle
    global img
    def efface() :
     
        Fond.delete(img)
     
        return
    #Fonction Deplacement
    def depla(gd,hb):
        global xc,yc
        xc,yc=xc+gd,yc+hb
     
        return
    def butG() :
        efface()
        depla(-100,0)
        img=Fond.create_image(xc,yc,image=F_cocG,anchor="nw")
     
     
    #construction de la fenêtre
    fen=Tk()
    fen.title("Go !")
    fen.geometry("1000x680")
    Fond=Canvas(fen,width=1000,height=680,bg="#BBBBF9")
    Fond.place(x=0,y=0)
    #Chargement des imaaes coccinelles
     
    F_cocG=PhotoImage(file="cocG.gif")
    F_cocH=PhotoImage(file="cocH.gif")
    #Mis en place des bouttons
    #largeur 30=250 pixels
    Gauche=Button(fen,width=30,height=2,bg='white',text="Gauche",command=butG)
    Gauche.place(x=1,y=620)
     
    #Position initiale de la coccinelle
    xc=randint(1,1000)
    yc=randint(1,630)
    #print("xc=",xc)
    #print("yc=",yc)
    img=Fond.create_image(xc,yc,image=F_cocH,anchor="nw")
     
    fen.mainloop()
    Le problème se situe à la ligne 7 dans l'expression Fond.delete(img) qui est sensée effacer l'image précedente . Si on met ALL comme paramètre tout fonctionne, mais je voudrais savoir pourquoi elle ne fonctionne pas avec le paramètre img( c à dire qu'il ya bien la nouvelle image décalée mais l'ancienne persiste).
    En vous remerciant de m'avoir consacré de votre temps
    Images attachées Images attachées   

  2. #2
    Membre habitué
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Août 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Août 2015
    Messages : 10
    Par défaut
    Bonjour,

    Je ne suis pas tout à fait sûr mais je pense qu'il faut que tu ajoutes "Fond" dans les arguments de de la function pour effacer.

    Voilà, j'espère que ça marchera.

    Cordialement,

    Jules

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2012
    Messages : 112
    Par défaut
    Bonjour et merci ,mais cela ne marche pas.

    J'essaie d'appliquer ce que j'ai trouvé dans un livre.

    "Diverses méthodes sur le widget Canvas permettent de modifier les propriétés des items placés :
    méthode C.delete(item). Effet efface l'item du Canvas C."

    Mais c'est peut être une erreur de programmation du type variable globale et locale ou un mauvais passage de résultat de fonction , pourtant j'ai bien déclaré img en "global"

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 700
    Par défaut
    Salut,

    Citation Envoyé par torquemada Voir le message
    Mais c'est peut être une erreur de programmation du type variable globale et locale ou un mauvais passage de résultat de fonction , pourtant j'ai bien déclaré img en "global"
    Certes, mais pas le "img" qui est assigné dans "butG".
    Plutôt qu'utiliser des variables "globales", vous pourriez associer l'image à un tag.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Fond.create_image(xc,yc,image=F_cocH,anchor="nw", tag="image")
    ...
    Fond.delete("image")
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2012
    Messages : 112
    Par défaut
    Bonjour,
    Merci de vos conseils
    J'ai appris qu'il faut déclarer une variable "global" dans chaque fonction ou elle est utilisée et non pas en tête de pgr comme je l'avais fait(comme en vb par ex).

    Quant au mot Tag je n'ai pas trouvé de doc bien explicite. Voici ce que j'ai compris

    Je peux attribuer à plusieurs variables différentes le même tag ce qui leur permettra d'être traitées toutes par la fonction f(nom du tag)

    Exemple Fond.create_image(xc,yc,image=F_cocH,anchor="nw", tag="image") et Fond.create_image(xc,yc,image=F_cocG,anchor="nw", tag="image") subiront le même delete('image') qqsoit l'image active en cours.

    Merci de votre collaboration

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 700
    Par défaut
    Citation Envoyé par torquemada Voir le message
    J'ai appris qu'il faut déclarer une variable "global" dans chaque fonction ou elle est utilisée et non pas en tête de pgr comme je l'avais fait(comme en vb par ex).
    Dans les fonctions, on peut accéder aux variables "globales" en lecture. "global" n'est nécessaire que lorsque la fonction doit leur assigner autre chose.


    Citation Envoyé par torquemada Voir le message
    Quant au mot Tag je n'ai pas trouvé de doc bien explicite. Voici ce que j'ai compris

    Je peux attribuer à plusieurs variables différentes le même tag ce qui leur permettra d'être traitées toutes par la fonction f(nom du tag)
    Vous pouvez associer un (ou plusieurs) tag à un (ou plusieurs) items d'un Canvas Tk.
    Cela permet de les désigner pour appliquer des opérations (.move, .delete,...) de la même façon qu'avec l'identifiant retourné lors de leur création - que vous devez stocker dans une variable "Python".
    Vous avez une liste de documentation tk/tkinter ici.
    Leur grand défaut est de ne pas vous expliquer tout ce que vous pourriez faire avec.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2012
    Messages : 112
    Par défaut
    Merci pour votre disponibilité

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

Discussions similaires

  1. Probleme avec delete[]
    Par anisjemmali dans le forum C++
    Réponses: 4
    Dernier message: 28/03/2007, 17h46
  2. Pb de syntaxe avec DELETE
    Par skip le cariboo dans le forum Requêtes
    Réponses: 3
    Dernier message: 30/11/2006, 15h45
  3. Probleme avec delete
    Par edogawa dans le forum Hibernate
    Réponses: 4
    Dernier message: 04/09/2006, 14h39
  4. [VB]problème avec DELETE
    Par jogu dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 07/01/2006, 10h53
  5. Erreur avec DELETE !
    Par James64 dans le forum Langage SQL
    Réponses: 18
    Dernier message: 25/10/2005, 10h49

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