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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    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
    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
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 761
    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 761
    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
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre éprouvé
    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
    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
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 761
    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 761
    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
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre éprouvé
    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
    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