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

GUI Python Discussion :

Afficher gif sur canva avec bouton


Sujet :

GUI Python

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 10
    Points : 6
    Points
    6
    Par défaut Afficher gif sur canva avec bouton
    Bonjour à tous,
    Tout récent dans la prog python, je suis actuellement en train d'exploiter la bibliothèque tkinter.
    J'ai donc créer une fenetre toute conne avec un champs pour chercher une image au format .gif (à l'aide de askopenfile)
    J'arrive donc à récupérer le path de l'image mais je ne trouve pas comment arriver à l'afficher sur le canva...

    J'ai essayé à l'aide de la méthode create_image que j'ai placé dans une procédure que le lance à l'aide d'un bouton après avoir récupéré le chemin du fichier. Mais cela ne marche pas... j'ai bien vérifier que le chemin du fichier est bien récupéré mais rien n'y fait. Quand je lance l'affichage de l'image lors de la creation de la fenêtre ça marche, mais j'arrive pas à affecter l'action d'affichage d'une image à un bouton... Je pense que je n'utilise pas la bonne méthode....

    Pouvez vous me renseigner ?

    J'espere que la question n'a pas deja été posée, car je n'ai pas trouvé de réponse...

    Merci d'avance

    NightK

  2. #2
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Points : 891
    Points
    891
    Par défaut
    salut, un petit morceau de code nous aiderait bien, pour comprendre ton problème, et donc t'aider!
    merci

    sinon, voici une piste. As tu pensé a stocker l'instance de ton image dans une variable afin qu'elle persiste dans ton programme?

    voici un lien :
    http://www.developpez.net/forums/d90...mage-toplevel/
    a+

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    désolé de repondre si tard, je suis actuellement à l'autre bout du monde ^^

    voici le code de ma procédure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    def displayPicture():
        global path
        displayPix = PhotoImage(file=path)
        canPix.create_image(340, 220, image=displayPix)
    le code du bouton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    butDisplay = Button(fButtons, text = 'Display',width = 6,command = displayPicture)
    butDisplay.grid(row=0, column = 0)
    et le code du canvas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    canPix = Canvas(fPix, width=680, height=440)
    canPix.grid(row=0, column=0, padx = 5, pady=5)
    et l'image ne se raffraichit pas lors de l'appuit sur le bouton alors que si je fait l'affichage de l'image lors de la creation de la fenetre, là ça marche

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 222
    Points : 290
    Points
    290
    Par défaut
    Bonjour,
    Il faut créer le PhotoImage en dehors de la fonction, sinon l'image est détruite à la fin de la fonction.

  5. #5
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par nyko77 Voir le message
    Bonjour,
    Il faut créer le PhotoImage en dehors de la fonction, sinon l'image est détruite à la fin de la fonction.
    Je vais regarder dans ce sens là, merci bcp =)


    Edit : Oui mais du coup, je fais comment pour lui dire d'afficher l'image au moment ou j'actionne le bouton display oO ?

    Merci d'avance,
    NightK

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 222
    Points : 290
    Points
    290
    Par défaut
    Un exemple vaut mieux qu'un long discours:

    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 displayPicture():
        canPix.create_image(340, 220, image=displayPix)
     
     
    fen = Tk()
    butDisplay = Button(fen, text = 'Display',width = 6,command = displayPicture)
    butDisplay.grid(row=1, column = 0)
     
    canPix = Canvas(fen, width=680, height=440)
    canPix.grid(row=0, column=0, padx = 5, pady=5)
     
    displayPix = PhotoImage(file="monImage.gif")
     
    fen.mainloop()

  7. #7
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour,

    Je ne rajouterais que la notion de référence, très importante avec Tk et PhotoImage.
    Tu dois toujours garder la référence à ton image dans un objet sinon tu risque de perdre celle ci (le nom existeras encore, donc pas d'erreur, mais ton image ne s'affichera pas).
    Comme objet tu peut utiliser le .image (monwidget.image=displayPix) d'un widget (le plus pratique s'il existe) ou, par exemple, un dico comme dans la faq.

    Sur l'exemple de la faq :

    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
    from Tkinter import *
     
    def displayPicture():
        displayPix = PhotoImage(file = imgfile)   
        gifsdict[displayPix] = displayPix
        canPix.create_image(340, 220, image=displayPix)
     
    fen = Tk()
     
    imgfile = "Mickey_Mouse_.gif"
     
    gifsdict={}
     
    Button(fen, text = 'Display', width = 6, command = displayPicture).grid(row=1, column = 0) # Pas besoin de nommer le widget
     
    canPix = Canvas(fen, width=680, height=440)
    canPix.grid(row=0, column=0, padx = 5, pady=5)
     
    fen.mainloop()
    @+
    Merci d'utiliser le forum pour les questions techniques.

  8. #8
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Merci je vais regarder ça

    Désolé de ne pas avoir répondu avant!

    Encore merci
    !

Discussions similaires

  1. [XL-2007] Afficher/cacher des lignes avec bouton
    Par pat66 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 07/02/2013, 10h18
  2. Réponses: 5
    Dernier message: 23/09/2006, 12h40
  3. Réponses: 1
    Dernier message: 05/08/2006, 20h43
  4. Afficher un fond sur une action bouton
    Par lordenzo dans le forum Flash
    Réponses: 6
    Dernier message: 31/03/2006, 12h47
  5. [Tkinter] Insérer une image jpg sur un canvas avec PIL
    Par Kyojimbo dans le forum Tkinter
    Réponses: 2
    Dernier message: 23/02/2006, 16h46

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