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 :

Savoir le nom d'un élément graphique qui est dans une boucle ?


Sujet :

Tkinter Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2018
    Messages : 26
    Points : 22
    Points
    22
    Par défaut Savoir le nom d'un élément graphique qui est dans une boucle ?
    J'ai fait un programme en Python avec Tkinter qui créer une fenêtre avec 36 carrés rouges dedans
    Les carrés sont créés dans une boucle, je souhaiterais modifier la couleur de chaque carré, je ne vois pas comment faire ...
    J'ai essayé avec la méthode .itemconfig mais il me manque le nom de l'élément graphique

    Voici mon programme (fait avec edupython):

    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
    from tkinter import*
    fenetre=Tk()
    canvas=Canvas(fenetre,height=600,width=600) #taille de la fenêtre
    canvas.pack(side=LEFT)
     
     
    liste_carres=[]
    liste_couleur=[]
    couleur=['#1247ed','red','blue','green','pink','orange','#a7d5e1'] #liste de couleur
     
    def action(ev): #donne le numéro du carré
        ligne=ev.x//100
        colonne=ev.y//100
        k=6*colonne+ligne
        print(k)
     
     
    for k in range(36): #créer 36 carrés
        colonne=k%6
        ligne=k//6
        a=10+colonne*100
        b=10+ligne*100
        c=a+80
        d=b+80
        liste_carres.append(canvas.create_rectangle(a,b,c,d,fill='red'))
     
     
    canvas.bind('<Button-1>',action)
     
    fenetre.mainloop()

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 396
    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 396
    Points : 36 954
    Points
    36 954
    Par défaut
    Salut,

    Citation Envoyé par reborn1234 Voir le message
    J'ai essayé avec la méthode .itemconfig mais il me manque le nom de l'élément graphique
    Il ne vous manque rien: vous avez stocké l'identifiant de chaque élément graphique/item du Canvas dans liste_carres.
    Cet identifiant est un entier qui se récupère via liste_carres[k]. C'est ce qu'attend .itemconfig pour savoir quel item modifier.

    - W

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2018
    Messages : 26
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,



    Il ne vous manque rien: vous avez stocké l'identifiant de chaque élément graphique/item du Canvas dans liste_carres.
    Cet identifiant est un entier qui se récupère via liste_carres[k]. C'est ce qu'attend .itemconfig pour savoir quel item modifier.

    - W
    Merci de votre réponse, cependant j'ai toujours un petit problème
    Je ne comprend pas comment récupérer un identifiant via liste_carres[k], je suppose qu'il faut utiliser la méthode get mais ça reste flou pour moi...

    Et lorsque j'obtiendrais l'identifiant pour modifier la couleur je devrais faire : canvas.itemconfig(identifiant,fill='blue') ?

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 396
    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 396
    Points : 36 954
    Points
    36 954
    Par défaut
    Salut,

    Citation Envoyé par reborn1234 Voir le message
    Je ne comprend pas comment récupérer un identifiant via liste_carres[k], je suppose qu'il faut utiliser la méthode get mais ça reste flou pour moi...
    Si vous stockez vos identifiants dans une liste, on peut supposer que vous sachiez les utiliser. Sinon, c'est un type de base du langage, avant de comprendre, il faut essayer d'apprendre: ouvrez un tuto. et relisez les chapitres qui montrent comment les utiliser.

    - W

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2018
    Messages : 26
    Points : 22
    Points
    22
    Par défaut
    Bonjour j'ai suivi vos conseils et j'ai trouvé une solution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    canvas.itemconfig(liste_carres[15],fill='blue')
    canvas.itemconfig(liste_carres[2],fill='blue')

    je modifie donc la couleur de chaque carré un par un , par exemple ici je met le 15eme et 2eme carré en bleu.

    Et si je souhaite mettre plusieurs carrés de la même couleur y a-t-il une façon de faire cela sur une ligne au lieu de faire comme ici une ligne de code par carré ?

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 396
    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 396
    Points : 36 954
    Points
    36 954
    Par défaut
    Citation Envoyé par reborn1234 Voir le message
    Et si je souhaite mettre plusieurs carrés de la même couleur y a-t-il une façon de faire cela sur une ligne au lieu de faire comme ici une ligne de code par carré ?
    Le Canvas vous permet d'étiqueter vos carrés avec des tags: canvas.itemconfig(le_tag, fill='blue') modifiera tous les items ayant le tag "le_tag".

    - W

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2018
    Messages : 26
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Le Canvas vous permet d'étiqueter vos carrés avec des tags: canvas.itemconfig(le_tag, fill='blue') modifiera tous les items ayant le tag "le_tag".

    - W
    Je crois que je me trompe de façon pour étiqueter mes carrés avec des tags,
    par exemple je fais

    code :
    le_tag=liste_carres[1] and liste_carres[2]
    canvas.itemconfig(le_tag,fill='blue')

    Lorsque je cherche sur internet les tags sont définis lors de la création de l'item donc je n'ai pas compris comment étiqueter un carré avec un tag apparemment

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 396
    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 396
    Points : 36 954
    Points
    36 954
    Par défaut
    Citation Envoyé par reborn1234 Voir le message
    Lorsque je cherche sur internet les tags sont définis lors de la création de l'item donc je n'ai pas compris comment étiqueter un carré avec un tag apparemment
    Vous pouvez aussi ajouter un tag à un item existant.

    Mais, vous pouvez utiliser des listes et des boucles:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for z in (2, 15):
          canvas.itemconfig(liste_carres[z],fill='blue')
    - W

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2018
    Messages : 26
    Points : 22
    Points
    22
    Par défaut
    Je n'y avais pas pensé mais effectivement c'est ce qui semble le plus logique.
    Super merci beaucoup pour vos réponses je comprend beaucoup mieux maintenant.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 05/03/2016, 13h01
  2. Réponses: 3
    Dernier message: 05/10/2006, 18h52
  3. [Tkinter] Méthode get() dans une boucle while
    Par Thundie dans le forum Tkinter
    Réponses: 2
    Dernier message: 04/02/2006, 00h06
  4. Afficher les élements d'un formulaire dans une autre fenetre
    Par BernardT dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 11/12/2005, 22h52
  5. Appel de methode dont le nom est dans une variable
    Par osopardo dans le forum Langage
    Réponses: 1
    Dernier message: 24/11/2005, 20h56

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