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 :

changement d'image


Sujet :

Tkinter Python

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 62
    Points : 44
    Points
    44
    Par défaut changement d'image
    Bonjour,
    j'ai écrit le code suivant pour afficher une image à l'accueil en attendant le début du programme. Une fois le bouton b1 enfoncé, je voudrais afficher une nouvelle image(plateau). Il efface bien l'image de départ mais il ne m'affiche rien du tout à la place. Pourquoi ?

    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
    from Tkinter import *
    def j3():
        can1.delete(ALL)
        can2=Canvas(accueil, width = 1000, height = 750, bg = 'dark grey')
        photo = PhotoImage(file ='plateau.gif')
        item = can2.create_image(500,375, image = photo)
        can2.pack(side = TOP)
    # programme principal
    accueil = Tk()
    #création widget fenêtre d'accueil
    can1=Canvas(accueil, width = 1275, height = 864)
    photo = PhotoImage(file ='tarot.gif')
    item = can1.create_image(635,430, image = photo)
    can1.pack(side = TOP)
    b1 = Button(accueil, text = '3 joueurs', command = j3, padx = 40, pady = 20).pack(side = LEFT)
    b2 = Button(accueil, text = 'Quitter', command = accueil.quit, padx = 40, pady = 20).pack(side = RIGHT)
    accueil.mainloop()
    accueil.destroy()
    Merci d'avance,
    Fk

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Points : 923
    Points
    923
    Par défaut
    A mon avis, c'est parce que la variable can2 est détruite dès que la fonction j3 a rendu la main (à vérifier, mais c'est ce qui semble le plus plausible)
    Essaie de rendre can2 globale (ou bien d'utiiser can1)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 62
    Points : 44
    Points
    44
    Par défaut
    Merci Oiffrig d'avoir répondu

    en fait j'ai mis can2 à la place de can1 car qu'en j'utilise can1 il ne se passe rien du tout la première image ne s'efface même pas

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Points : 923
    Points
    923
    Par défaut
    Apparemment, c'était bien un problème de référence, mais sur l'objet PhotoImage
    Voilà un code qui fonctionne chez moi :
    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
    # -*- coding: latin-1 -*-
     
    from Tkinter import *
     
    # programme principal
    accueil = Tk()
    #création widget fenêtre d'accueil
    can1=Canvas(accueil, width = 500, height = 500)
    photo = PhotoImage(file ='1.gif')
    item = can1.create_image(250,250, image = photo)
    can1.pack(side = TOP)
     
    def j3():
        global photo, item
        can1.delete(item)
        photo = PhotoImage(file ='2.gif')
        item = can1.create_image(250,250, image = photo)
     
    b1 = Button(accueil, text = '3 joueurs', command = j3, padx = 40, pady = 20).pack(side = LEFT)
    b2 = Button(accueil, text = 'Quitter', command = accueil.quit, padx = 40, pady = 20).pack(side = RIGHT)
    accueil.mainloop()
    accueil.destroy()

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 62
    Points : 44
    Points
    44
    Par défaut résolu
    Génial Oiffrig ,

    çà marche et j'ai même compris pourquoi
    Merci en tout cas, car je n'aurai pas trouvé tout seul

    François

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 206
    Points : 79
    Points
    79
    Par défaut
    Je n'arrive pas à faire intervenir d'image dans mes programmes, j'ai essayé avec la faq mais je ne la comprend pas bien.

    Par exemple dans le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    import Tkinter as Tk
    root = Tk.Tk()
    button = Tk.Button()
    imgfile = strchemin ## strchemin:str, chemin d'accès à l'image
    img = Tk.PhotoImage(file = imgfile)  ## Création d'un objet PhotoImage qui reconnait les extensions .gif et .ppm
    gifsdict={}  ## Utilisation d'un dictionnaire pour conserver une référence sur la PhotoImage créée
    gifsdict[imgfile] = img 
    button.configure(image=img) ## Ajout de l'image sur le bouton
    button.pack()
    root.mainloop()
    J'ai un problème avec strchemin: j'ai essayé str, suivi du parcours pour arriver au fichier, mais la syntaxe est invalide (problème des ":" après le "C") j'en déduis donc qu'un doit écrire autre chose, mais je ne vois pas quoi et le commentaire ne m'aide pas trop :s

    Des iées? Merci d'avance

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 62
    Points : 44
    Points
    44
    Par défaut
    Je suis débutant alors pas sûr ma réponse mais j'utilise par exemple pour chercher l'image dans C:/Fk/Programmation/Python:

    from os import chdir
    chdir("C:/Fk/Programmation/Python")

    et sa marche chez moi

    François

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 19/01/2006, 10h57
  2. Changement d'image suivent le passage du curseur!
    Par ghyosmik dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 03/01/2006, 17h22
  3. [FLASH 8] Realiser un changement d'image
    Par Gemelos dans le forum Flash
    Réponses: 3
    Dernier message: 21/11/2005, 13h48
  4. Changement d'image si l'originale absente
    Par MitchDap dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 16/03/2005, 09h06
  5. changement d'image par radio boutton
    Par ph_anrys dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 14/03/2005, 16h27

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