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 :

Canvas create image


Sujet :

Tkinter Python

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3
    Par défaut Canvas create image
    b'soir
    je suis tombé face à un étrange problème...(je travaille sur Tk)
    voici la partie de mon code:
    je relance la fonction a la chaine, switchant le p de 1 à 0 et de 0 à 1 a chaque fois, exécutant donc la partie if et else de facon alternée, dans le but d'afficher une image dans le canvas 'image' qui doit donc changer selon la valeur de p

    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
     
    def valider(event):
        global p
        if p==1:
            [...]
            uestion = Image.open("question.png") 
            uestion = ImageTk.PhotoImage(uestion)
            image.delete(Tk.ALL)
            image.create_image(0,0, anchor = Tk.NW, image=uestion)
            [...]
            p=0
        else:
            [...]
            image.delete(Tk.ALL)
            image.create_image(0,0, anchor = Tk.NW, image=question)
            [...]
            p=1

    sachant que 'question' c'est exactement la même image mais définir en même temps que les widgets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    question = Image.open("question.png") 
    question = ImageTk.PhotoImage(question)

    Le problème:
    le create_image dans la boucle if n'affiche rien, tandis que celui dans la boucle else affiche correctement l'image...

    Alors là faut avouer que ca fait 20min que je me creuse dessus et je ne comprend toujours pas pourquoi il ne veut pas, c'est exactement la même facon de définir les images, sauf que le create_image de la boucle else fait appel à une image definie ailleurs, et ca fonctionne, alors que le create_image dans la boucle if fait appel à une image definie JUSTE avant, et ca ne fonctionne pas...
    help svp !!!

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 753
    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 753
    Par défaut
    Salut,

    Citation Envoyé par vertus Voir le message
    c'est exactement la même facon de définir les images, sauf que le create_image de la boucle else fait appel à une image definie ailleurs, et ca fonctionne, alors que le create_image dans la boucle if fait appel à une image definie JUSTE avant, et ca ne fonctionne pas...
    C'est le comportement "attendu": le référence au retour ImageTk.PhotoImage doit être sauvergardée "ailleurs", sinon le widget ne la trouve plus.
    voir http://effbot.org/tkinterbook/photoimage.htm

    Bon courage
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3
    Par défaut
    merci beaucoup
    dans ce cas comment faire si on veut changer d'image sous l'action de la fonction ?
    Car il faut bien définir une nouvelle image, si on connait le nom de l'image uniquement dans la fonction (stockée dans une liste de données traitée dans la fonction par exemple)


    EDIT: C'est bon trouvé, merci pour la doc, le .image= a résolu le probleme !!

    merci beaucoup

Discussions similaires

  1. [Lazarus] Différence entre Image.Canvas et Image.Picture.BitMap.Canvas
    Par ChPr dans le forum Lazarus
    Réponses: 17
    Dernier message: 15/09/2011, 07h27
  2. Canvas plus image et un label
    Par obione dans le forum Flex
    Réponses: 2
    Dernier message: 08/02/2011, 16h54
  3. probleme avec un Canvas et image
    Par patricestrasbourg dans le forum Tkinter
    Réponses: 3
    Dernier message: 20/03/2009, 13h00
  4. Réponses: 1
    Dernier message: 05/08/2006, 20h43
  5. [JScrollPane][Canvas] L'image ne s'affiche pas
    Par TheReturnOfMuton dans le forum AWT/Swing
    Réponses: 10
    Dernier message: 05/06/2006, 13h17

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