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 :

Image dans canvas non affichée si dans un objet


Sujet :

Tkinter Python

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Image dans canvas non affichée si dans un objet
    Bonjour,
    je tente d'afficher une image dans un Canvas, celui-ci étant intégré dans une Frame avec d'autres Widgets. Si je suis l'exemple de la FAQ de Développez (https://python.developpez.com/faq/?p...as#CanvasImage, tout va bien mais si j'intègre le Canvas dans des objets, l'image n'apparait pas ...alors que d'autres items (lignes, rectangles) apparaissent.
    J'ai extrait des bouts de mon code (tournant sous Python 3.8) qui reproduisent le problème :
    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
    from tkinter import *
    from PIL import ImageTk
     
    root = Tk()
     
    option = input("option [d, o, h] ?")
     
    # option directe ------------------------------------------------------------------------
    if option == 'd':
        frame = Frame(root, width=400, height=400, bg='red')
        frame.grid(row=0, column=0, sticky=E+W)
     
        photo = ImageTk.PhotoImage(file="color.png")
     
        canvas = Canvas(frame, width=photo.width(), height=photo.height(), bg='pink')
        canvas.grid(row=0, column=0, sticky=E+W)
     
        canvas.create_image(5, 5, anchor=NW, image=photo)
        canvas.create_line(0, 100, 200, 0, fill="red")
     
    # option OO sans héritage ------------------------------------------------------------------
    elif option == 'o':
        class maFrame():
            def __init__(self, root):
                frame = Frame(root, width=400, height=400, bg='red')
                frame.grid(row=0, column=0, sticky=E+W)
     
                photo = ImageTk.PhotoImage(file="color.png")
     
                canvas = Canvas(frame, width=photo.width(), height=photo.height(), bg='pink')
                canvas.grid(row=0, column=0, sticky=E+W)
     
                canvas.create_image(5, 5, anchor=NW, image=photo)
                canvas.create_line(0, 100, 200, 0, fill="red")
     
        maFrame(root)
     
    # option OO avec héritage  ------------------------------------------------------------------------
    elif option == 'h':
        class maFrame(Frame):
            def __init__(self, root):
                super().__init__(root, width=400, height=400, bg='red')
                self.grid(row=0, column=0, sticky=E + W)
     
                photo = ImageTk.PhotoImage(file="color.png")
     
                canvas = Canvas(self, width=photo.width(), height=photo.height(), bg='pink')
                canvas.grid(row=0, column=0, sticky=E+W)
     
                canvas.create_image(5, 5, anchor=NW, image=photo)
                canvas.create_line(0, 100, 200, 0, fill="red")
     
        mf = maFrame(root)
     
    root.mainloop()
    Est-ce qu'un oeil avisé saura déceler pourquoi du code dans un objet ne se comporte pas comme attendu ? Merci pour votre aide.
    Images attachées Images attachées  

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 301
    Points : 6 781
    Points
    6 781
    Par défaut
    Salut,

    Tu dois conserver des références de tes objets: self.frame, self.photo, self.canvas, etc...

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Bonsoir VinsS,
    effectivement c'était bien cela le pb. Merci !

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

Discussions similaires

  1. Images trop volumineuses non affichées en mosaïque
    Par susumu dans le forum Langage
    Réponses: 3
    Dernier message: 27/01/2014, 18h14
  2. [AC-2007] Problème d'image dans champs Objet OLE
    Par Igloobel dans le forum IHM
    Réponses: 1
    Dernier message: 10/09/2013, 05h20
  3. Image noire, dessins non affichés.
    Par troumad dans le forum SDL
    Réponses: 3
    Dernier message: 02/07/2013, 07h13
  4. Affichage d'une image dans un objet TImage
    Par ninaleo dans le forum Delphi .NET
    Réponses: 2
    Dernier message: 03/07/2008, 12h11
  5. [ImageMagick] Image créée mais non affichée en include
    Par Adaviada dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 11/09/2007, 10h26

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