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

Python Discussion :

Image qui ne s'affiche pas


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2017
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2017
    Messages : 141
    Par défaut Image qui ne s'affiche pas
    Bonjour,

    L'orsque je charge mes images hors de la fonction "foncHelpPage01", les images apparaissent dans mon canevas, si les charges dans la fonctions, elles n'apparaissent pas, sur un site il est expliqué que les images apparaissent puis disparaissent tellement vite que l'on n'a pas le temps de le voir à l'oeil nu.
    Voici le code juste pour cette fonction pour ne pas mettre 500 lignes :

    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
    def foncHelpPage01():
        #   *********************
        #   Création HELP PAGE 01
        #   *********************
        #   Chargement des images
     
        PHOTO_HELP01_1 = PhotoImage(file="Help_01_a.png")
        PHOTO_HELP01_2 = PhotoImage(file="Help_01_b.png")
        PHOTO_HELP01_3 = PhotoImage(file="Help_01_c.png")
     
        #   Création de la fenêtre Help
        fenHelp = Toplevel()
        fenHelp.title("Help")
        fenHelp.configure(bg="Tan")
        #   Création objLabelHelp01 et 02
        objHelpLabel01 = Label(fenHelp, text="Choix de la liste des codes", bg="Tan")
        #   Height = Nb de lignes en hauteur, si pas précisée elle s'ajuste toute seule, width = largeur en nb de caractères
        objHelpLabel02 = Label(fenHelp, text="\n     Commencez par attribuer un nom pour chacune des listes dont vous avez besoin,\n \
        Exemples : Code professionels, Code sites web ect...) via le menu MODIFICATION.\n \
        Vous pouvez par ce biais changer le nom d'une liste sans modifier les noms de codes.\n \n \
        Les listes (1) donnerons le choix des sous-menus dans la liste déroulante (2).\n \
        Le menu REINITIALISATION permet de remettre à zéros une liste de votre choix :\n \
        ATTENTION, cela supprimera tous les codes de cette liste.\n", bg="Tan", font=("Helvetica"), fg="Black", justify =("left"))
     
        #   Création photo01
        objHelpCan01 = Canvas(fenHelp, bg='dark grey', height=106, width=470)
        objHelpCan01.create_image(235, 53, image=PHOTO_HELP01_1)    #   Division par 2 de la taille pour centrer : 470/2 = 235
        #   Création photo02
        objHelpCan02 = Canvas(fenHelp, bg='dark grey', height=47, width=119)
        objHelpCan02.create_image(60, 23, image=PHOTO_HELP01_2)
        #   Création photo03
        objHelpCan03 = Canvas(fenHelp, bg='dark grey', height=47, width=119)
        objHelpCan03.create_image(60, 23, image=PHOTO_HELP01_3)
     
        #   Création Bouton Suivant
        objHelpBoutSuiv =Button(fenHelp, image=PHOTO8, command=foncHelpPage02, bg="Tan")
        #   Création Bouton Quit
        objHelpBoutQuit =Button(fenHelp, image=PHOTO4, command=fenHelp.destroy, bg="Tan")
        #   positionnements
        objHelpLabel01.grid(row=0)
        objHelpLabel02.grid(row=1)
     
        objHelpCan01.grid(row=2)
        objHelpCan02.grid(row=4)
        objHelpCan03.grid(column=2, row=4)
     
        objHelpBoutSuiv.grid(row=5, sticky=W)
        objHelpBoutQuit.grid(row=5, sticky=E)

    Donc cela fonctionne si je retire les 3 lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        PHOTO_HELP01_1 = PhotoImage(file="Help_01_a.png")
        PHOTO_HELP01_2 = PhotoImage(file="Help_01_b.png")
        PHOTO_HELP01_3 = PhotoImage(file="Help_01_c.png")
    et que je les places avant l'appel à la fonction, mon problème est que cela réserve de la mémoire alors que ces images ne sont que pour une seule fenêtre d'info, je voudrais les charger seulement si on clique sur help et les décharger dès que l'on ferme cette fenêtre.

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

    L'image restera affichée pourvu que l'objet PhotoImage survive à la sortie de la fonction.C'est le cas lorsque les images sont créées "avant" (et associées à des variables globales).
    Dans votre cas, la durée de vie des PhotoImage doit être aussi grande que les widgets qui les utilisent donc vous pouvez par exemple les "référencer" dans une liste associée à une attribut de la Toplevel (qui sera détruite avec):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        fenHelp = Toplevel()
        fenHelp.title("Help")
        fenHelp._images = [ PHOTO_HELP01_1, PHOTO_HELP01_2, PHOTO_HELP01_3]
        ...
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2017
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2017
    Messages : 141
    Par défaut
    Salut,

    Merci ça marche.

    Je n'ai pas bien compris "la durée de vie des PhotoImage doit être aussi grande que les widgets qui les utilisent", si je ne ferme pas la fenêtre "fenHelp", les PhotoImages ne devraient pas être détruite !
    Si ?

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Citation Envoyé par Ragus1970 Voir le message
    si je ne ferme pas la fenêtre "fenHelp", les PhotoImages ne devraient pas être détruite !
    Si ?
    Les PhotoImage sont détruits à la sortie de la fonction parce que assignées dans des variables locales. La Toplevel y survit parce que tkinter créé (à votre insu) une référence dans les children du widget parent (qui pourra être utilisé lors du .destroy).

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

  5. #5
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2017
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2017
    Messages : 141
    Par défaut
    D'accord, c'est casse gueule quand on connait pas cette subtilité !
    Merci pour ton temps.

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

Discussions similaires

  1. [WebForms]Image qui ne s'affiche pas
    Par Filippo dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 19/12/2007, 20h51
  2. images qui ne s'affichent pas
    Par mikees dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 24/08/2006, 23h31
  3. background image qui ne s'affiche pas :(
    Par vermo dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 26/08/2005, 10h01
  4. [HTML]Image qui ne s'affiche pas sous firefox...
    Par OrangeBud dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 13/10/2004, 13h42
  5. [debutant][Tomcat]Images qui ne s'affichent pas
    Par omega dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 07/04/2004, 09h44

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