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

wxPython Discussion :

mise à jour d'un treeCtrl avec une variable globale


Sujet :

wxPython

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 21
    Points : 18
    Points
    18
    Par défaut mise à jour d'un treeCtrl avec une variable globale
    Bonjour à toutes et à tous,

    j'ai un petit souci de mise à jour d'un treectrl sous boa.
    Je vous expose le probleme.
    Je possede un frame avec un treectrl vierge. Je souhaite le mettre a jour apres une action utilisateur dans un popup (mise à jour dynamique).
    Le texte écrit par l'utilisateur dans la popup est passé dans une variable globale. A la fermeture de la popup, la fonction qui met à jour le treectrl est appelée.

    la fonction qui doit mettre à jour le treectrl est défini dans le même module que la variable globale.
    Lors de l'appel de cette fonction, la variable globale recoit bien le texte passé par l'utilisateur. Mais le TreeCtrl est considéré comme inconnu.

    Ci dessous le code

    Avez vous la moindre idée ?

    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
     
    # definition des import
    import wx
    import Test    # Frame ou est defini le treectrl
     
    # definition des variables globales
    testnom = ""
    bTestNom = False
     
     
    ####################################
    # function to add an element in the 
    # tree ctrol, called treeCtrl1 
    ####################################
    def AddElementInTree():
        print("dans Addelementintree Monpremier :" + testnom)
        racine = Test.treeCtrl1.AddRoot(testnom)
        Test.treeCtrl1.SetPyData(racine, None)        
        Test.treeCtrl1.Expand(racine)

  2. #2
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 84
    Points : 86
    Points
    86
    Par défaut
    Juste je viens de voir un truc dans ta fonction, je sais pas si c'est grave mais :

    print " Test ", variable, pas de "+", moi j'ai une erreur dans python si je fait cela.
    et parfois avec Wx, l'erreur s'affiche pas toujours ou très rapidement, ca vient peut être de là.

    Malgré tout il manque pas un bon de ton code?Tu as alors un autre scripts qui lance cette fonction.

    Sinon je pensais a uen chose, j'ai eu y a quelques temps un problème similaire, mon programme renvoyé la valeur mais ne continue pas. J'ai modifié en partant de ma frame, et l'update, ce fait par une fonction dans le même scripts. Sinon essaie avec deux scripts mais dans l'autre sens.

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 21
    Points : 18
    Points
    18
    Par défaut mise à jour d'un treeCtrl avec une variable locale
    Bonjour,
    suite à la premiere reponse, voici quelques precisions :
    je n'ai pas de probleme pour faire le print avec la séquence + variable.
    Je note quand même la remarque.

    Concernant le treectrl, j'ai trouvé une solution partiel,mais qui ne me convient pas complement.
    En gros, je ferme la fenetre contenant le treectrl et je la reconstruit avec les informations passées dans la ou les variables globales.

    Cela marche mais c'est visuellement lourd.

    La vrai question est : Comment mettre à jour de maniere dynamique un TreeCtrl ?
    Je vais ouvrir un nouveau sujet dessus.

    Bonne journée
    Lajuve

  4. #4
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 84
    Points : 86
    Points
    86
    Par défaut
    Je ne peux t'en dire plus de mon côté. Quand tu me dit mise à jour, je pense à self.Update pour une frame mais sans doute pas ce que tu cherches.

  5. #5
    Membre expérimenté Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Points : 1 728
    Points
    1 728
    Par défaut
    Salut,

    Je te conseille de telecharger les demos disponibles sur le site de wxpython, ils contiennent des exemples de treeCtrl que tu pourras surement adapter à ton programme.

    Concernant l'utilisation de variable globale, je te le deconseille.
    A mon sens, il serait plus logique de créer un evenement personnalisé sur l'action de ton utilisateur et de 'binder' celui-ci dans ta fénetre principale pour mettre à jour ton contrôle (voir le demos sur les events).

    Bonne continuation.

    pacificator.

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Mai 2002
    Messages : 309
    Points : 396
    Points
    396
    Par défaut
    juste en vitesse, je n'ai pas essayé alors bonne chance.

    dans la fonction __init__ tu ajoutes;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        def __init__(self, parent):
            self._init_ctrls(parent)
     
            self.parent = parent
    Dans ta fonction tu ajoues :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
                fen = self.parent
                fen.Ton_Objet.Update()
    J'espère que c'est bon, sinon c'est une piste de recherche.

    Bon courage

  7. #7
    Membre à l'essai
    Inscrit en
    Octobre 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 21
    Points : 18
    Points
    18
    Par défaut mise à jour d'un Treectrl
    Bonjour et merci à tous pour vos reponses,

    voila la solution que j'ai choisie pour l'instant. Elle pourra évoluer dans le temps.
    Je considere le treectrl comme un element à plusieurs sous ensemble(3 pour etre precis).
    A chaque sous ensemble, j'associe une liste (initialisé avec une seule variable au debut).
    A chaque modification du treectrl, je rajoute un element dans la liste visée.
    Puis j'entame la mise à jour du treectrl. En fait j'efface tous les elements du treectrl et je reconstruit tout en tenant compte des elements contenues dans les differentes listes.

    A la fin, je choise d'expander mon treectrl afin de voir tout l'arbre.

    Quel est votre avis sur cette solution ?
    Bonne journée
    Lajuve

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

Discussions similaires

  1. [XL-2003] Mise à jour d'un module avec une macro
    Par Alain69140 dans le forum Contribuez
    Réponses: 0
    Dernier message: 23/03/2013, 10h00
  2. Mise à jour de fichier CSV avec une exécution automatique
    Par WeDgEMasTeR dans le forum Langage
    Réponses: 1
    Dernier message: 20/05/2010, 14h07
  3. Réponses: 7
    Dernier message: 11/05/2010, 16h37
  4. Réponses: 12
    Dernier message: 30/11/2009, 00h12
  5. problème avec une variable globale(SDL)
    Par rayman77 dans le forum C
    Réponses: 1
    Dernier message: 20/02/2009, 13h20

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