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 :

instantiation multiple d'objets Tk


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de bringer
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2009
    Messages : 125
    Par défaut instantiation multiple d'objets Tk
    bonjour, j'ai une petite question.

    J'ai créer une classe où je positionne plusieurs checkbutton dans un frame.
    Ces checkbutton ont des missions différentes et un des check reçoit le nom et prenom d'un personne de façon à ce qu'ensuite je puisse selectionner des traitements en fonction des personnes selectionnées.
    Cette classe est instanciée x fois dans une classe application en fonction du nombre de personnes à pointer.

    Voila le contexte.
    Maintenant, puisque j'ai x objets différents, pourquoi, lorsque je clic sur le checkbutton d'une personne, toutes les personnes se valident comme étant selectionnées ?
    Pour l'instant, ce n'est que du visuel est je n'ai pas développé le fonctionnel, mais le comportement m'interpelle.

  2. #2
    Membre émérite
    Homme Profil pro
    heu...
    Inscrit en
    Octobre 2007
    Messages
    648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : heu...

    Informations forums :
    Inscription : Octobre 2007
    Messages : 648
    Par défaut
    Publies ton code, il sera plus facile de t'aider

  3. #3
    Membre confirmé Avatar de bringer
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2009
    Messages : 125
    Par défaut
    Bonjour N.tox,

    depuis la publication de mon message, j'ai un peu avancé. voici le code actuel.

    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
     
    self.__status_mailing_var=0
    #création du texte nom+prenom formater
    label_identity=self.nom.ljust(15)+' '+self.prenom
    #creation des label pour gerer les nom et prenom
    self.chk_identity=Checkbutton(self.framecontainer,
    				#variable=self.__status_mailing_var, 
    				bd=1, 
    				relief=FLAT, 
    				text=label_identity,
    				justify=LEFT,
    				indicatoron=0,
    				command=self.__check_identity_on)
     
    #dans la classe application, j'instancie plusieurs des ces checkbuttons qui,
    #avec d'autres, formes une ligne complète de gestion des identités
    En fait, j'ai supprimé l'attribut "variable" et maintenant, le code fonctionne comme je le veux.

    Mais j'aimerai bien comprendre pourquoi. J'ai l'impression qu'avec l'attribut "variable", c'est l'état du checkbutton qui était pris en compte. Mais pourquoi cela se répercutait sur toutes les autres lignes???
    Sans l'attribut "variable", on dirait que c'est l'objet qui est positionné, et du coup, le check se fait juste sur la ligne concernée.

    Qu'en penses-tu ?
    P.S. par la même occasion, je transmet une copie écran du soft. C'est sur les checkbutton rouge (nom+prenom barbouillés) que le problème se situait.
    Images attachées Images attachées  

  4. #4
    Membre émérite
    Homme Profil pro
    heu...
    Inscrit en
    Octobre 2007
    Messages
    648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : heu...

    Informations forums :
    Inscription : Octobre 2007
    Messages : 648
    Par défaut
    J'ai déjà rencontré un problème similaire (ou en tous cas qui me semble similaire) : je devais créer un nombre n de boutons dynamiquement, où chacun pointait sur la même fonction, mais avec un paramètre différent tous ajoutés eux aussi dynamiquement dans une liste, la solution à été d'utiliser des fonctions lambda :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Button(xxx, command=lambda self=self, param=idx: fonction(self.lst[idx]))

  5. #5
    Membre confirmé Avatar de bringer
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2009
    Messages : 125
    Par défaut
    bonjour N.tox et merci de m'aider dans la recherche

    En fait, je ne pense pas que ce soit le même problème. J'ai aussi un système de checkbutton avec une fonction lambda pour les coches de présence des pièces au dossier (cf image du post précédent)

    Il demeure que je n'ai toujours pas trouver la réponse logique au problème, même si la fonction désirée marche bien.
    Je ne sais pas pourquoi le fait d'enlever l'attribut "variable" du checkbutton règle le problème.

  6. #6
    Expert confirmé
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Par défaut
    Si tu utilises toujours la même variable ( self.__status_mailing_var ) pour le paramètre variable des checkbutton, c'est normal que tous tes checkbutton soit interconnecté.

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

Discussions similaires

  1. Jersey et fichier JSON : multiplication d'objets
    Par casserole dans le forum Services Web
    Réponses: 4
    Dernier message: 22/12/2013, 19h54
  2. [PHP 5.3] Multiplication d'objet par référence
    Par MaitrePylos dans le forum Langage
    Réponses: 2
    Dernier message: 29/06/2012, 21h56
  3. Refuser/autoriser l'instantiation d'un objet
    Par kakamoux dans le forum C#
    Réponses: 5
    Dernier message: 18/03/2011, 02h50
  4. Tris multiples sur Objets
    Par gudul dans le forum Langage
    Réponses: 2
    Dernier message: 04/12/2007, 19h47
  5. pointeur multiple sur un objet
    Par Arnaud-h dans le forum C++Builder
    Réponses: 9
    Dernier message: 02/06/2004, 11h33

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