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

GUI Python Discussion :

CheckButton indexé qui ne s'affichent pas [Python 3.X]


Sujet :

GUI Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Juillet 2018
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2018
    Messages : 33
    Par défaut CheckButton indexé qui ne s'affichent pas
    Bonjour,

    Je cherche à afficher 6 "Checkbutton" dans un "Labelframe"

    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
     
    import tkinter
    from tkinter import *
     
    # Creation de la fenêtre de saisie
    window = Tk()
    window.title("Hexagone creator")
    window.geometry("500x500")
    window.resizable(width=False, height=False)
    window.configure(background="grey")
     
    #Choix des fleuves (checkbutton)
    cadre_fleuve = LabelFrame(window, text="Choix des HexSides avec un fleuve", padx=0, pady=0)
    cadre_fleuve.place(anchor = "ne" , x=475, y=25, width=200, height=175)
     
    fl = [BooleanVar()] * 6
    txt = ["nord", "nord-est", "sud-est", "sud", "sud-ouest", "nord-ouest"]
    check_fleuve = [tkinter.Checkbutton(cadre_fleuve)] * 6
     
    i = 0
    while i < 6 :
        check_fleuve[i].config(variable=fl[i], text= "Fleuve au " + txt[i])
        check_fleuve[i].place(x=5, y=5 + 20 * i)
        i+=1
     
     
    # main
    window.mainloop()
    Au lieu d'afficher les 6 "Checkbutton", un seul s'affiche...

    Nom : Capture d'écran 2026-09-06 162427.png
Affichages : 120
Taille : 16,9 Ko

    Une idée pour corriger ça ?
    Note : j'ai besoin de conserver un "index" des "Checkbutton" (i.e. check_fleuve[i]) pour pouvoir les reconfigurer dans la suite du programme.
    A vous lire,

    Rick.

  2. #2
    Invité de passage
    Femme Profil pro
    Inscrit en
    Mars 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 2
    Par défaut
    Bonjour,

    Avec la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    check_fleuve = [tkinter.Checkbutton(cadre_fleuve)] * 6
    tu es en train de créer 6 références vers un seul et même Checkbutton. La boucle qui suit travaille donc sur ce seul élément.

    Tu dois en créer 6 distincts :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    check_fleuve = [tkinter.Checkbutton(cadre_fleuve) for _ in range(6)]
    Pareil avec fl = [BooleanVar()] * 6 : lorsque l'utilisateur cliquera sur un Checkbutton, il modifiera toutes les cases de fl, et pas juste la ie correspondante.

  3. #3
    Membre averti
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Juillet 2018
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2018
    Messages : 33
    Par défaut
    Ah ok ! Un soucis de syntaxe donc...

    Un GRAND merci pour cette réponse qui va solder mon pb (et me faire progresser ; je n'ai qu'une semaine de Python en autodidacte derrière moi...)

    Je tague le topic en "résolu"
    Rick.

  4. #4
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 992
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 992
    Par défaut
    Hello,

    Oui créer 6 références identiques,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> import tkinter
    >>> cadre_fleuve = tkinter.Tk()
    >>> check_fleuve = [tkinter.Checkbutton(cadre_fleuve)] * 6
    >>> print([id(check) for check in check_fleuve])
    [139816147046416, 139816147046416, 139816147046416, 139816147046416, 139816147046416, 139816147046416]
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

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

Discussions similaires

  1. [HTML]Image qui ne s'affiche pas sous firefox...
    Par OrangeBud dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 13/10/2004, 13h42
  2. pages qui ne s'affichent pas
    Par luck dans le forum ASP
    Réponses: 4
    Dernier message: 19/07/2004, 11h35
  3. [Applet] BorderLayout qui ne s'affiche pas
    Par Invité(e) dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 29/04/2004, 11h39
  4. [debutant][Tomcat]Images qui ne s'affichent pas
    Par omega dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 07/04/2004, 09h44
  5. [MFC] Ces fenêtres qui ne s'affichent pas..
    Par Davide dans le forum MFC
    Réponses: 3
    Dernier message: 19/11/2003, 11h30

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