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 :

Probléme valeur d'une variable


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Avatar de moithibault
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2009
    Messages : 124
    Par défaut Probléme valeur d'une variable
    Bonjour ,

    J'affiche un menu en cascade avec une liste de fichiers à inclure (Tkinter):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for file in os.listdir('./fichiers'):
                  menu.add_command(label=file,command=lambda:self.load(file))
    Donc ici je demande simplement d'ajouter le titre de tout les fichiers présents dans le dossier "fichiers" à un menu en cascade.

    Le problème c'est lorsque que je clique sur un fichier pour le charger ( grâce à ma méthode load) Il me charge toujours le dernier , je pense que la variable file dans "command=..." comme elle n'est appelé qu'a la fin du chargement elle a pour valeur sa dernière valeur transmise en locurrence le nom de mon dernier fichier et ça expliqueré mon probléme mais je me demande comment le résoudre , je pensais à crée a chaque lecture de la boucle une nouvelle variable qui contiendré la valeur de la variable actuel de la boucle de file.... C'est dur a expliquer à l'écrit j'espère que vous avez compris (je croit que c'est un cas fréquent) Pouvez-vous m'aider , merci!


    J'ai mis mon topic dans 'Général Python' , mon code contient une commande Tkinter mais mon problème ne concerne pas cette commande c'est plutôt un probléme de variable ....

  2. #2
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Par défaut
    normal, il faut stocker chacune des instances de menu sinon, a chaque itération celle ci remplace la précédente.

    essaie ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    listeMenu=[]
    for file in os.listdir('./fichiers'):
        listMenu.append(menu.add_command(label=file,command=lambda:self.load(file)))

  3. #3
    Membre confirmé
    Avatar de moithibault
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2009
    Messages : 124
    Par défaut
    Arf ça marche toujours pas ..

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 068
    Par défaut
    utiliser 'file' comme nom de variable c'est mal ...

  5. #5
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Par défaut
    +1
    mais pas percuté

    alors essaie de ne pas passer "file" mais l'index de "file"

    ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    listFichier=os.listdir('./fichiers')
    a=0
    while a<len(listFichier):
        menu.add_command(label=listFichier[a],command=lambda:self.load(listFichier[a]))
        a+=1
    qui sait!

  6. #6
    Membre confirmé
    Avatar de moithibault
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2009
    Messages : 124
    Par défaut
    Merci Ca marche avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while a<(len(listFichier)-1)
    et pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     while a<len(listFichier)
    sinon "index out of range"

    Ca marche mais comme avant : il me charge toujours le dernier ....

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

Discussions similaires

  1. problème de changement de valeur d'une variable
    Par Mondhir01 dans le forum GUI
    Réponses: 0
    Dernier message: 30/05/2010, 22h45
  2. Réponses: 2
    Dernier message: 10/04/2008, 11h48
  3. Réponses: 2
    Dernier message: 11/02/2008, 22h02
  4. Réponses: 2
    Dernier message: 16/11/2007, 18h38
  5. Réponses: 2
    Dernier message: 21/09/2007, 17h27

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