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 :

Probleme de fonction et fenetre


Sujet :

Python

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2015
    Messages : 9
    Par défaut Probleme de fonction et fenetre
    Bonjour, j'aimerai ouvrir une fenetre avec une image.gif lorsque je clique sur un des deux boutons.
    Le programme d'ouverture de fenetre marche tres bien indépendamment mais lorsque je le mets dans une fonction celui-ci m'ouvre une fenetre vierge. J'ai essayé plusieurs chose mais je n'y arrive pas. Merci pour votre future aide
    Je vous joints mes 2 programmes pour que vous y voyez plus clair



    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
    from tkinter import* 
    fenetre = Tk ()
    fenetre.title("Gestion ouverture")
     
    #Fenetre ouvrant une image de cadenas fermée
    def PHOTOOUVERTE():
     
     
        Fenetre=Tk()
        photo1=PhotoImage(file="cadenas.gif",format="gif -index 1")
        labl = Label(Fenetre, image=photo)
        labl.pack()
        Fenetre.mainloop()
     
     
    def PHOTOFERMEE():
     
        Fenetre=Tk()
        photo=PhotoImage(file="cadenas.gif",format="gif -index 1")
        labl = Label(Fenetre, image=photo)
        labl.pack()
        Fenetre.mainloop()
     
     
    #_____________________     MESSAGE          __________________________ 
    msg1= Label(fenetre, text ="Deverrouiller la boite aux lettres ?", font = "arial 16 bold", fg = "blue").grid(row = 0, columnspan = 2)
     
    #__________________        BOUTONS  __________________
    bouton_yes = Button(fenetre, text =" OUI ",command = PHOTOOUVERTE, fg="green").grid(row=4, column=0)
    bouton_no = Button(fenetre, text=" NON ",command= PHOTOFERMEE, fg = "red").grid(row=4, column=1)
    #________________________   Image          ___________________
    photo = PhotoImage(file ='cadenas.gif')
    espace_image = Canvas(fenetre, width =170, height =170, bg ='blue')
    espace_image.grid(row=3 ,columnspan=2, column=0, padx =10, pady =10)
    espace_image.create_image(85, 85, image =photo)
     
    mainloop ()
    Et le code d'erreur.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Exception in Tkinter callback
    Traceback (most recent call last):
      File "C:\Python34\lib\tkinter\__init__.py", line 1487, in __call__
        return self.func(*args)
      File "E:\module_de_fermeture.py", line 11, in PHOTOOUVERTE
        labl = Label(Fenetre, image=photo)
      File "C:\Python34\lib\tkinter\__init__.py", line 2573, in __init__
        Widget.__init__(self, master, 'label', cnf, kw)
      File "C:\Python34\lib\tkinter\__init__.py", line 2091, in __init__
        (widgetName, self._w) + extra + self._options(cnf))
    _tkinter.TclError: image "pyimage1" doesn't exist
    Fichiers attachés Fichiers attachés

  2. #2
    Membre émérite
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Par défaut
    Bonjour,
    Le problème est simple: dans une application, il ne doit y avoir qu'une seule et unique instance de Tk (La première Frame est en générale cette instance).
    Afin de rajouter des fenêtre indépendantes, il suffit d'utiliser des fenêtres Toplevel.
    Le problème: chaque instance de Tk possède son propre espace des noms, gestionnaire de fenêtres, ses variables, objets…

    Clodion

  3. #3
    Expert confirmé

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 306
    Par défaut
    Salut,

    J'ajouterai aussi que tu te trompes dans le nom de l'image:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        photo1=PhotoImage(file="cadenas.gif",format="gif -index 1")
        labl = Label(Fenetre, image=photo)

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2015
    Messages : 9
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    def fenetre_aide ():
        top_lvl=Toplevel()# Self.root c'est le nom de la fenetre principale.
        top_lvl.grab_set()
        fenetre_aide=Canvas(top_lvl,width="722",height="788")
        photo2=PhotoImage(file="cadenas.gif",format="gif -index 1")# deuxiéme image, celle ci ne marche pas.
        fenetre_aide.create_image(361,384,image=photo2)# Mon image fait 722x788
        fenetre_aide.pack()
    J'ai defini cette fonction que j'active à l'aide de mon bouton mais l'image ne veut pas charger, quelqu'un sait pourquoi ?

    MERCI pour l'idée du Toplevel et l'explication

Discussions similaires

  1. Réponses: 17
    Dernier message: 24/03/2005, 12h24
  2. [C#] Probleme de dimensionnement des fenetres en MDI
    Par stephdiplo150 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 28/05/2004, 19h05
  3. [langage] problème avec fonction read
    Par domidum54 dans le forum Langage
    Réponses: 2
    Dernier message: 30/03/2004, 20h42
  4. [VB6]Problème de fonction
    Par mustang-ffw02 dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 27/03/2004, 15h09
  5. Probleme de fonction
    Par yenna dans le forum ASP
    Réponses: 6
    Dernier message: 01/03/2004, 14h10

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