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 :

Changer l'image de fond à l'aide d'un bouton [Python 3.X]


Sujet :

Tkinter Python

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2013
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2013
    Messages : 35
    Points : 31
    Points
    31
    Par défaut Changer l'image de fond à l'aide d'un bouton
    Bonjour,
    je débute en Python et je suis confronté au problème suivant :
    j'ai une fenêtre avec un canevas contenant une image de fond et je voudrais pouvoir modifier l'image de fond à l'aide d'un bouton. J'ai procédé comme suit :


    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 Image_de_fond():
     global can1
     fen1 = Tk()
     can1 = Canvas(fen1,bg='dark grey',height=1000,width=1000)
     can1.grid(row=1,column=0,columnspan=10)
     
     photo1 = PhotoImage(file ='Photo_1.gif')
     can1.create_image(325,240,image=photo1)
     
     But1=Button(fen1,text='Change le fond',command=change_fond)
     But1.grid(row=0,column=0)
     
     fen1.mainloop()
     
    def change_fond():
     global can1
     photo2 = PhotoImage(file ='Photo_2.gif')
     can1.create_image(325,240,image=photo2)
     
    Image_de_fond()
    mais lorsque je clique sur le bouton, rien ne se passe. La commande semble ignorée...

    Est-ce que quelqu'un aurait une idée ? Merci à tous et bonne journée,

    HT

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    C'est une erreur classique : si vous mettez un PhotoImage dans une variable locale, Tkinter perd la référence à l'image et au mieux vous n'avez pas de résultat au pire vous avez un message PyImage does not exist.

    Mettez global photo en début de fonction et cela devrait fonctionner.

    Pour la suite de votre code, en revanche, je vous laisse cogiter ce qui ne vas pas...

    @+.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2013
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2013
    Messages : 35
    Points : 31
    Points
    31
    Par défaut
    Merci beaucoup !
    Encore une fois une petite erreur mais qui me prenait bien la tête... Par contre je ne vois pas ce que tu veux dire sur la suite de mon code ?? De toutes façons le code que j'ai posté était juste un exemple reprenant le problème que je rencontrais. En tous cas mon problème est résolu, ça marche très bien !

    Bonne fin de journée,

    HT

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par HelloThury Voir le message
    Par contre je ne vois pas ce que tu veux dire sur la suite de mon code ??
    Ça :

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
     
    # take a look at
    # 'Zen of Python'
    # (console output)
    import this
     
    # see also PEP 8: http://legacy.python.org/dev/peps/pep-0008/
    # and PEP 0263: http://legacy.python.org/dev/peps/pep-0263/
     
    # début du programme
     
    from tkinter import *
     
    def test_image_de_fond():
        # init variables globales
        global canvas, photo
        # *explicit is better than implicit*
        fenetre = Tk()
        canvas = Canvas(fenetre, bg='dark grey')
        canvas.pack(expand=1, fill=BOTH)
        # référence globale /!\
        photo = PhotoImage(file='Photo_1.gif')
        # on crée l'image la première fois
        canvas.create_image(
            0, 0,
            anchor=NW,
            image=photo,
            tags="img_fond",
        )
        # bouton pour changer l'image de fond
        Button(
            fenetre,
            text='Changer le fond',
            command=changer_le_fond,
        ).pack()
        # boucle événementielle principale
        fenetre.mainloop()
    # end def
     
    def changer_le_fond():
        "on change l'image de fond du canvas"
        # init variables globales
        global photo
        # on REMPLACE l'image d'origine
        # ET NON PAS
        # on ENTASSE les images
        # les unes sur les autres /!\
        photo = PhotoImage(file='Photo_2.gif')
        # on modifie l'image déjà existante
        canvas.itemconfigure("img_fond", image=photo)
    # end def
     
    # à connaître par coeur :
     
    if __name__ == "__main__":
     
        test_image_de_fond()
     
    # end if
    @+.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Merci de cliquer pour clore cette discussion.

    @+.

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

Discussions similaires

  1. [Batch] Changer l'image de fond
    Par heliy dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 02/02/2011, 11h29
  2. JComboBox changer l'image de fond de l'editor
    Par bankette dans le forum Composants
    Réponses: 3
    Dernier message: 18/11/2010, 16h17
  3. changer l'image de fond et activer une checkbox
    Par groskanel dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 16/02/2010, 16h13
  4. Changer une image de fond d'un autre block.
    Par Darkus_91 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/01/2008, 12h06
  5. comment changer l'image de fond d'une cellule par un menu ?
    Par @rno0059 dans le forum Mise en page CSS
    Réponses: 18
    Dernier message: 25/06/2007, 00h06

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