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 :

Listbox après sélection option copie dans label écrasé par option 2eme Listbox [Python 3.X]


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2014
    Messages : 11
    Par défaut Listbox après sélection option copie dans label écrasé par option 2eme Listbox
    Bonjour, Je suis en train faire un jeu de mots avec Tkinter. Pour cela j'utilise pour l'instant 2 ListBox (sur 9 prévues) pour afficher les mots disponibles pour jouer.
    Ainsi, qu'une ligne de labels qui recevront les mots sélectionnés dans les ListBox.
    Jusque là tout va bien. J'arrive à coller dans le premier label le premier mot (article) sélectionné parmi les 6 possibles.
    Mais, là où cela ne va plus c'est quand je veux coller un mot de la 2eme listbox (celle des noms) dans le deuxième label.
    le mot est non seulement inscrit dans le deuxième label (ce qui est normal). Mais, aussi dans le label réservé aux articles (qu'il écrase).
    J'ai essayé mille et un test possibles (selon mes connaissances limités) je ne comprends pas pourquoi les mots sélectionnés sont dupliqués des les deux cases label ??
    Pourtant, j'ai bien dissocié les deux ListBox et les labels n'ont pas le même libellé. pour les tests j'ai deux fonctions (une pour les articles et une pour les noms). Malgré cela les mots sélectionnés sont dupliqués dans les deux labels.
    Quelqu'un voit-il la solution à ce problème qui est certainement simple à résoudre..
    J'ai des capture d'écran du code et de l'affichage des ListBox. Mais je ne sais pas comment les charger dans le forum ??
    A BIENTÔT !

  2. #2
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 923
    Billets dans le blog
    8
    Par défaut
    Bonjour,
    Fais nous parvenir ton code à l'aide des balises codes du forum (clic sur symbôle # lors de l'édition de ton message)…

  3. #3
    Membre habitué
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2014
    Messages : 11
    Par défaut Code du programme et résultats lors de l'éxécutio étape par étape.
    J'ai téléchargé les 8 photos .jpg pour montrer ce qui se passe.
    Les deux première présentent le code du programme.
    et les autres les résultats lors de l'éxecution. Clic dans Listbox1 (Articles). Puis Listbox2 (Noms).
    à l'éxécution, les trois premières photos montre un bon fonctionnement.
    Par contre, dés que je clique dans la deuxième Listbox des (Noms) à écrire à la suite de l'article déjà mis dans la première case (Lab1).
    Le mot choisi s'inscrit dans sa case (la deuxième). Mais s'inscrit aussi dans la première case ou il y a l'article et l'écrase. Ce n'est pas le but recherché.
    Dans le programme,Je me suis arrêté à la deuxième case car il y avait ce Bug ! Parce que le but du jeu c'est de faire des phrases sur au moins 10 case (Labels) et autant de Listbox (une par type de mot (articles,noms,verbes,prépositions,etc...)
    Il faut que le mot mis dans une case ne bouge plus de cette place. Il faut aussi considérer que l'on peut utiliser un autre article (identique ou autre) ou Nom, verbe,etc... dans les autres case.
    En fait, il ne faut pas qu'un mot en écrase un autre qui est déjà dans les case précédents. Pour moi, ça paraît compliqué ! Mais, peut-être pas pour vous !
    J'utilise TKINTER au ras des pâquerettes. Je ne veut pas utiliser de classe ! ou des fonctions compliquées....
    J'espère que vous pourrez les visualiser. Car, c'est la première fois que j'envoie des documents dans ce forum.
    A BIENTÔT ! à vous lire..
    Images attachées Images attachées         

  4. #4
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 923
    Billets dans le blog
    8
    Par défaut
    Citation Envoyé par Hominidé Voir le message
    Bonjour,
    Fais nous parvenir ton code à l'aide des balises codes du forum (clic sur symbôle # lors de l'édition de ton message)…
    Bonjour,
    Des photos ne permettent pas de copier/coller ton code pour le tester ... Merci d'utiliser les balises codes du forum.

  5. #5
    Membre habitué
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2014
    Messages : 11
    Par défaut Code python-Tkinter de l'application jeu de mots (phases)
    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    # G:/PROGRAMMATION\THONNY IDE\MES PROGRAMMES\PROGRAMMES\python-TKINTER\TKINTERCrazyListboxDansCanvas.py 
    from tkinter import *
    fen = Tk()
    fen.title("ESSAI AVEC CANVAS")
    fen.geometry("600x600")
     
    # Fonctions test Clics Listbox et affichage dans labels (lab1,Lab2, etc...)
    # ===========================================
     
    def selarticle(event):
        selart=Lb1.selection_get()
        Lab1.configure(text=selart,bg='silver')
     
    def selnom(event):
        selno=Lb2.selection_get()
        Lab2.configure(text=selno,bg='skyblue')
     
    # Création (dans 1er canvas) une ligne vierge de labels devant recevoir les mots cliqués dans les Listbox ci-dessous.
    # =======================================================================     
    police=("arial",12,"bold")    
    CanPlateau = Canvas(fen, width=500, height=50, bg='burlywood')
    # pour placer le canvas aux coordonnées x,y remplacer monCanvas.pack() par place(x,y)
    CanPlateau.place(x=10,y=150)    # va placer le début du Canvas aux coordonnées (10,150).
     
    Lab1=Label(CanPlateau,text="",font=police,width=12,height=3,relief=RAISED,bg='burlywood')
    Lab1.grid(row=0,column=0)
    Lab2=Label(CanPlateau,text="",font=police,width=12,height=3,relief=RAISED,bg='burlywood')
    Lab2.grid(row=0,column=1)
    Lab3=Label(CanPlateau,text="",font=police,width=12,height=3,relief=RAISED,bg='burlywood')
    Lab3.grid(row=0,column=2)
     
    # Création 2eme Canvas contenant les ListBox des mots à sélectionner (réduites à Deux pour les essais)
    ===============#================================================
    CanListebox = Canvas(fen, width=500, height=50,bg='pink')
    # pour placer le canvas aux coordonnées x,y remplacer monCanvas.pack() par place(x,y)
    CanListebox.place(x=10,y=400)   # va placer le début du Canvas aux coordonnées (10,400)
     
    # Listbox Articles
    # =========
    Articles=["Le","La","Les","Un","Une","Des"]
    nbmots=len(Articles)
     
    Lb1=Listbox(CanListebox, height=nbmots,width=10, font=police,justify=LEFT,bg="silver")
    for i in range(nbmots):
        Lb1.insert(i,Articles[i])
    Lb1.grid(row=0,column=0)
    Lb1.bind('<<ListboxSelect>>',selarticle)
     
    # Listbox Noms Communs
    # ===============
    Noms=["chien(s)","grenouille(s)","singe(s)","limace(s)","araignée(s)","cloporte(s)","anguille(s)","crevette(s)"]
    nbmots=len(Noms)
     
    Lb2=Listbox(CanListebox, height=nbmots,width=10, font=police,justify=LEFT,bg="skyblue")
    for i in range(nbmots):
        Lb2.insert(i,Noms[i])
    Lb2.grid(row=0,column=1)
    Lb2.bind('<<ListboxSelect>>',selnom)
     
    fen.mainloop()
    J'ai organisé le code pour qu'il soit plus lisible !
    A BIENTÔT !

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Salut,

    Avant de partir à coder une application qui utilise plusieurs widgets, vous devriez commencer par essayer de comprendre le fonctionnement des différents widgets que vous voulez utiliser et faire de petits exemples de code pour vérifier qu'ils se comporteront bien comme vous l'attendez.

    <<ListboxSelect>> sera appelé lorsque la "selection" change.
    Et quand vous avez plusieurs Listbox, cette sélection est "globale".
    Par défaut, c'est le clipboard/presse papier.

    Si on clique sur un item d'une des Listbox, la selection "globale" change, les callbacks associés sont donc appelés et vous récupérez la même chaine de caractères!
    C'est pour contrôler ce défaut que l'option exportselection existe.

    Cela fait, .selection_get va planter parce qu'on ne met plus rien dans le clipboard et que ce n'est pas la "bonne façon" pour récupérer les items sélectionnés dans une Listbox: on récupère la liste des index sélectionnés via .curselection, puis on fait un .get dessus.

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

  7. #7
    Membre habitué
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2014
    Messages : 11
    Par défaut Demande d'exemple de code !
    Bonjour,
    Je comprends que je ne sais pas grand chose sur les actions à entreprendre. je n'ai pas pensé à la déclaration "GLOBAL". là, je suis muet !
    c'est pourquoi, je ne demande qu'à apprendre. J'ai déjà essayé du code avec une ListBox (ça fonctionne avec un Print("vous avez cliqué sur:",item). Mais, je n'ai pas trouvé d'exemples de code avec plusieurs ListeBox.
    Dés que vous essayé d'appliquer l'exemple à votre propre application, c'est beaucoup plus compliqué.
    Pouvez-vous me donner un bout de code pour résoudre mon problème ?
    MERCI d'avance ! A BIENTÔT !

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 04/03/2017, 10h50
  2. sélection de données dans mdb protégé par mot de passe
    Par unja2010 dans le forum Bases de données
    Réponses: 4
    Dernier message: 28/06/2013, 13h01
  3. Réponses: 7
    Dernier message: 26/03/2008, 09h23
  4. [MySQL] Paramètrer ma requete après sélection dans un formulaire
    Par philippef dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 08/11/2006, 13h39
  5. Rediriger vers une page après sélection dans un select
    Par belzeluc dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 07/11/2006, 22h32

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