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 :

Générer des boutons avec changement de couleur et indexation de ceux ci


Sujet :

Tkinter Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 28
    Points : 19
    Points
    19
    Par défaut Générer des boutons avec changement de couleur et indexation de ceux ci
    Bonjour à tous
    je sollicite une fois de plus votre aide afin de me permettre de régler le problème de ce code
    en fait je souhaite générer automatiquement des boutons que je pourrai indexer tout en changeant la couleur de ce bouton en cliquant sur lui
    Voici à peu près ce que j'ai bien pu faire comme code pour l'heure:
    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
     
    from tkinter import *
     
    def set_color(b):
        def do_it():
             b['bg'] = 'red'
        return do_it
     
    def construct_button(i):
    	def affich():
    		print(i)
    		set_color(b)
     
    	b=Button(root,text="P"+str(i),command=affich)
    	b["bg"]="blue"
    	return b
    root = Tk()
    l=1
    for i in range(0,150,25):
        construct_button(l).place(x=0+i,y=50)
        l+=1
    root.mainloop()
    En exécutant ce code ,l'on a en cliquant sur un bouton un retour du N° du bouton mais aucun changement de couleur
    et j'ai besoin à la fois des deux éléments
    merci bien pour votre aide

  2. #2
    Membre confirmé

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Points : 503
    Points
    503
    Billets dans le blog
    1
    Par défaut
    Salut.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def do_it() :
       return 'do it'
     
    print('Bonjour, je fais un appel à la fonction do_it : ', do_it())
    print('Bonjour, je suis la référence de la fonction do_it : ', do_it)
    Mais dans ton code, cette fonction do_it est inutile, et nul besoin de retourner quoi que ce soit.

    On pourrait simplifier tout cela, tu le verras au fil de tes tests.
    Le temps ronge l'amour comme l'acide.

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

    Relisez le code de votre fonction "set_color":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    def set_color(b):
        def do_it():
             b['bg'] = 'red'
        return do_it
    Elle se contente de définir une fonction (do_it) et de la retourner.

    Vous pourriez vous contenter d'écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    def construct_button(i):
    	def affich():
    		print(i)
    		b['bg'] = 'red'
     
    	b=Button(root,text="P"+str(i),command=affich)
    	b["bg"]="blue"
    	return b
    En tout cas, çà serait pas mal de (re)lire un tuto sur les closures/fermetures, car visiblement, vous vous mélangez les pinceaux.

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

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 28
    Points : 19
    Points
    19
    Par défaut
    merci beaucoup bistouille et Wiztricks pour vos réponses et votre aide
    je vais comme vous l'avez signifié me replonger dans les cours de closures/fermetures pour éviter dorénavant ce genre d'erreur au niveau de mes codes

Discussions similaires

  1. [XL-2007] Faire une liste récursive des dossiers et sous-dossiers avec changements de couleurs
    Par YAKYETI dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 25/01/2017, 12h52
  2. Générer des mail avec pièce jointe au format PDF
    Par Michel DELAVAL dans le forum Access
    Réponses: 2
    Dernier message: 26/06/2006, 15h07
  3. Réponses: 1
    Dernier message: 07/05/2006, 16h33
  4. Générer des statistiques avec graphiques, histogrammes
    Par nico33307 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 28/11/2005, 16h03
  5. Classe de boutons avec changement de listeners
    Par guipom dans le forum Composants
    Réponses: 2
    Dernier message: 25/01/2005, 12h26

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