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 :

affichage d'images avec Tkinter


Sujet :

Tkinter Python

  1. #1
    Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2016
    Messages : 129
    Points : 40
    Points
    40
    Par défaut affichage d'images avec Tkinter
    Bonsoir,
    je sais que ma question n'est pas nouvelle, mais je n'ai pas trouvé de réponse satisfaisante en navigant sur la toile. Depuis la fenêtre principale (fenetrage) j'ouvre une fenêtre Toplevel (affiche) dans laquelle je veux afficher une image. Le programme suivant affiche un Toplevel vide :


    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
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
     
     
    from Tkinter import *
    import tkMessageBox
    import os, sys
    import codecs
    from PIL import ImageTk, Image
     
     
    eol = "\n"
    racine = "/home/jam/python/prog/histoire/fichiers/cartes/"
     
     
    def fenetrage():
        fenetre = Tk()
        lancer = Button(fenetre, text="Afficher", command=affiche)
        lancer.grid(column=0, row=0)
     
    def affiche():
        global images
        fen = Toplevel()
        img = ImageTk.PhotoImage(Image.open(racine + images[0]))
        panel = Label(fen, image = img)
        panel.pack(side = "bottom", fill = "both", expand = "yes")
     
     
     
    if __name__ == "__main__": # création du main
        # déterminer l'utilisateur
        global images
        images = os.listdir(racine)
        fenetrage()
        mainloop()


    Pour afficher l'image, je découpe la fonction "affiche" en deux comme indiqué ci-dessous, et l'image s'affiche. Y a-t-il une solution plus élégante pour un aussi simple affichage ?

    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
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
     
     
    from Tkinter import *
    import tkMessageBox
    import os, sys
    import codecs
    from PIL import ImageTk, Image
     
     
    eol = "\n"
    racine = "/home/jam/python/prog/histoire/fichiers/cartes/"
     
     
    def fenetrage():
        fenetre = Tk()
        lancer = Button(fenetre, text="Afficher", command=affiche)
        lancer.grid(column=0, row=0)
     
    def affiche():
        global images, panel
        fen = Toplevel()
        img = ImageTk.PhotoImage(Image.open(racine + images[0]))
        affiche1(fen, img)
     
    def affiche1(fen, img):
        global panel
        panel = Label(fen, image = img)
        panel.pack(side = "bottom", fill = "both", expand = "yes")
     
     
    if __name__ == "__main__": # création du main
        # déterminer l'utilisateur
        global images
        images = os.listdir(racine)
        fenetrage()
        mainloop()
    Merci pour votre aide

  2. #2
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 608
    Points : 2 072
    Points
    2 072
    Par défaut
    Edite ton message et mets ton code entre balises (#) parce que là...
    Pas d'aide par mp.

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 281
    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 281
    Points : 36 768
    Points
    36 768
    Par défaut
    Salut,

    Citation Envoyé par jam7575 Voir le message
    je sais que ma question n'est pas nouvelle, mais je n'ai pas trouvé de réponse satisfaisante en navigant sur la toile.
    Les soucis de débutants sont généralement traités dans la FAQ tkinter. C'est bien de la lire sans avoir de problème spécifique à résoudre, juste pour voir ce qu'elle contient. Dans votre cas, c'est traité ici.
    note: avoir pris le temps de programmer avec un tuto. comme le Swinnen est un pré-requis (pas la peine de lire la FAQ sinon).

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

Discussions similaires

  1. Problème d'affichage d'images avec Tkinter
    Par flobos dans le forum Général Python
    Réponses: 3
    Dernier message: 14/03/2016, 16h35
  2. problème d'affichage dune image avec Tkinter
    Par destroy51 dans le forum GUI
    Réponses: 14
    Dernier message: 29/03/2014, 13h40
  3. Affichage d'image avec API Win32
    Par Chess0 dans le forum Windows
    Réponses: 12
    Dernier message: 14/12/2005, 07h14
  4. PB affichage d'image avec IE
    Par arturo dans le forum Modules
    Réponses: 6
    Dernier message: 25/09/2003, 17h28
  5. [VB6] Affichage d'image avec qlq contraintes
    Par youri dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 21/11/2002, 14h44

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