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 :

2 images dans un même programme et dans 2 fenêtres différentes


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 7
    Par défaut 2 images dans un même programme et dans 2 fenêtres différentes
    Bonjour,

    je souhaite insérer deux image dans un programme et dans deux fenêtres différentes sachant que la deuxième fenêtre (avec la deuxième image) s'ouvre en cliquant sur un bouton

    Voici la partie du programme qui correspond à l'ouverture de la première image :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    fen1 = Tk()
    can1 = Canvas(fen1, width = 1150, height = 700, bg ='white')
    photo = PhotoImage(file = 'Carte.gif')
    item = can1.create_image(575, 350, image = photo)
    can1.grid(sticky = 'NW', column = 1, row = 1)
    le bouton qui lance la fonction qui ouvre la deuxième image :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Button(text = '   OK   ', relief = FLAT, bg = 'royal blue', fg = 'white', command = AffichageResultat).grid(column = 2, row = 10)
    et la fonction qui doit se lancer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    def AffichageResultat():
      fen2 = Tk()
      can2 = Canvas(fen2, width = 545, height = 335)
      photo2 = PhotoImage(file = 'Moustique_resultat.gif')
      item2 = can2.create_image(272, 167, image = photo2)
      can2.grid(column = 1, row = 1)
      fen2.mainloop()
    le programme fonctionne jusqu'à ce que l'on appuie sur le bouton, ensuite la deuxième fenêtre s'ouvre mais pas l'image ...

    merci d'avance

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 093
    Par défaut
    Il faut utiliser un widget Toplevel pour la 2ème fenêtre.

  3. #3
    Membre Expert
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    952
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 952
    Par défaut
    Salut,

    Il y a aussi je pense une histoire de durée de vie de photo2, quand tu quittes AffichageResultat, photo2 cesse d'exister. Dans l'exemple ci-dessous, la persitance est réalisée en "accrochant" l'image à à un objet persistant, en l'occurence le Toplevel.
    win.photo = tk.PhotoImage(file=fname)

    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
     
    import Tkinter as tk
     
    def getImageWin(root, fname):
        win = tk.Toplevel(root)
        win.photo = tk.PhotoImage(file=fname)
        can = tk.Canvas(win)
        can.create_image(0, 0, image=win.photo, anchor='nw')
        sbarv = tk.Scrollbar(win,command=can.yview)
        sbarh = tk.Scrollbar(win,command=can.xview, orient='horizontal')
        can.grid(column=0, row=0, sticky='nsew')
        sbarv.grid(column=1, row=0, sticky='ns')
        sbarh.grid(column=0, row=1, sticky='ew')
        can['yscrollcommand'] = sbarv.set
        can['xscrollcommand'] = sbarh.set
        sbarv['command'] = can.yview
        sbarh['command'] = can.xview
        can['scrollregion'] = can.bbox("all")
        win.grid_rowconfigure(0, weight=1)
        win.grid_columnconfigure(0, weight=1)
     
    win = tk.Tk()
    tk.Button(win, text='Add picture', width=20, height=3, command=lambda fname="utest/img/skeleton.gif", root=win:getImageWin(root, fname)).grid()
    win.mainloop()
    A+

    Pfeuh

Discussions similaires

  1. Réponses: 14
    Dernier message: 13/08/2010, 09h19
  2. ouvrir un répertoire d'image et d'afficher son contenu dans une même fenêtre
    Par pianetdi dans le forum Interfaces Graphiques en Java
    Réponses: 2
    Dernier message: 12/04/2010, 16h12
  3. Réponses: 4
    Dernier message: 26/08/2009, 21h55
  4. Réponses: 1
    Dernier message: 26/03/2007, 11h27
  5. [débutant] Méthode appelée dans le même programme
    Par beegees dans le forum Langage
    Réponses: 12
    Dernier message: 26/12/2006, 18h00

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