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 :

Insérer la même image dans plusieurs boutons


Sujet :

Tkinter Python

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Février 2003
    Messages
    926
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 926
    Points : 283
    Points
    283
    Par défaut Insérer la même image dans plusieurs boutons
    Bonjour,

    je créé un série de boutons identiques et je veux qu'ils aient la même image. Mon code ci-dessous n'attribue l'image qu'au dernier bouton. Pourriez-vous m'aider à faire en sorte que tous mes boutons aient la même image, svp?
    Merci d'avance.

    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
    from tkinter import *
    from PIL import ImageTk, Image
     
    L = 600
    H = 500
    root = Tk()
    root.geometry('{}x{}'.format(L, H))
     
    conteneurTh1 = Frame(root, bg='red')    
    conteneurTh1.pack(fill=X)
     
    for n in range(1,6):
            img1 = Image.open('monImage.png')
            image1=img1.resize((30,25))
            useImg1 = ImageTk.PhotoImage(image1)
            newBtn = Button(conteneurTh1, image=useImg1)
            newBtn.grid(row=0, column=n)

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

    Citation Envoyé par Arsene12 Voir le message
    Pourriez-vous m'aider à faire en sorte que tous mes boutons aient la même image, svp?
    C'est par ici dans la FAQ...
    (une ressource parfois oubliée mais construite avec les questions/pièges dans lesquels tombent tous ceux qui débutent).
    - W

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Février 2003
    Messages
    926
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 926
    Points : 283
    Points
    283
    Par défaut
    Merci beaucoup. Il manquait une ligne à mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        for n in range(1,6):
            img1 = Image.open('monImage.png')
            image1=img1.resize((30,25))
            useImg1 = ImageTk.PhotoImage(image1)
            newBtn = Button(conteneur1, image=useImg1)
            newBtn.image = useImg1
            newBtn.grid(row=0, column=n)

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 347
    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 347
    Points : 36 870
    Points
    36 870
    Par défaut
    Et si votre code était cohérent avec le besoin exprimé: "je créé un série de boutons identiques et je veux qu'ils aient la même image", vous auriez écrit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    img1 = Image.open('monImage.png')
    image1=img1.resize((30,25))
    useImg1 = ImageTk.PhotoImage(image1)
    for n in range(1,6):
            newBtn = Button(conteneur1, image=useImg1)
            newBtn.grid(row=0, column=n)
    - W

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Février 2003
    Messages
    926
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 926
    Points : 283
    Points
    283
    Par défaut
    Merci. J'essaye maintenant de changer l'image lorsqu'on clique sur le bouton. Je vais ouvrir un nouveau sujet dessus car j'ai un problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            newBtn = BtnJoker(conteneur1, bg='green', image=useImg1)
            newBtn['command'] = newBtn.on_clickJoker # ajout de l'action à exécuter

    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
        class BtnJoker(Button):
            print("red")
            img1 = Image.open('JokerRed.png')
            image1=img1.resize((30,25))    
            def on_clickJoker(self):
                if self["bg"]== "green":
                    self.configure(self, bg="red")
                    photo1 = ImageTk.PhotoImage(Image.open("JokerRed.png"))
                    image1=photo1.resize((30,25))
                    self.configure(self, image=image1)
                    self.update_idletasks()
                    print("red")
                    for el in bout :
                        pass
                elif self["bg"]== "red":
                    self.configure(self, bg="green")
                    photo1 = ImageTk.PhotoImage(Image.open("JokerGreen.png"))
                    image1=photo1.resize((30,25))
                    self.configure(self, image=image1)
                    self.update_idletasks()
                    print("red")
                    for el in bout :
                        pass
    J'ai le message :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AttributeError: 'PhotoImage' object has no attribute 'resize'

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

Discussions similaires

  1. [Lazarus] Insérer une image dans un bouton
    Par DreamNooby dans le forum Lazarus
    Réponses: 2
    Dernier message: 15/10/2011, 01h47
  2. comment insérer une image dans un bouton
    Par yasminacha dans le forum Composants graphiques
    Réponses: 2
    Dernier message: 15/05/2011, 14h06
  3. Insérer les mêmes valeurs dans plusieurs tables
    Par hsoussou dans le forum SQL*Loader
    Réponses: 8
    Dernier message: 29/03/2010, 17h14
  4. Comment mettre le même TMainMenu dans plusieurs Form ?
    Par gmc dans le forum Composants VCL
    Réponses: 6
    Dernier message: 12/08/2004, 21h03
  5. utiliser le même fichier dans plusieurs projets vc++6
    Par yannick_sch dans le forum MFC
    Réponses: 5
    Dernier message: 12/02/2004, 17h39

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