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 :

fermer la fenetre principale avec une fonction


Sujet :

Tkinter Python

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 32
    Par défaut fermer la fenetre principale avec une fonction
    Bonjour,
    j'ai une question toute bête de débutant,
    comment fermer la fenêtre principale en passant par une fonction et non pas
    par un bouton?
    merci d'avance.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    from Tkinter import *
     
    def fermer():
        global root
        destroy(root)
     
    root = Tk()       
    bouton=Button(root,text='OK',command=fermer)     
    bouton.pack()
    root.mainloop()

  2. #2
    Membre très actif

    Inscrit en
    Juillet 2008
    Messages
    186
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 186
    Par défaut
    Bonjour,

    Dans ton exemple, appuyer sur le bouton OK va appeler la fonction fermer, donc ...

    Didier

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 32
    Par défaut
    le pb est que ça ne fonctionne pas
    je remet le code testé car l'autre n'était pas le bon.
    même avec celui-ci,ça ne ferme rien du tout.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 32
    Par défaut
    le pb est que ça ne fonctionne pas
    je remet le code testé car l'autre n'était pas le bon.
    même avec celui-ci,ça ne ferme rien du tout.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    from Tkinter import *
     
    def fermer():
        root.destroy
     
    root = Tk()
    bouton=Button(root,text='OK',command=fermer)
    bouton.pack()
    root.mainloop()

  5. #5
    Membre chevronné
    Homme Profil pro
    Responsable du parc et des réseaux de télécommunication
    Inscrit en
    Mai 2003
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable du parc et des réseaux de télécommunication
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2003
    Messages : 290
    Par défaut
    Bonjour,

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 32
    Par défaut
    ok je te remercie ça marche ,mon nouveau pb est que dans une class
    ça marche pas???

    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
    from Tkinter import *
     
    class New_acr:
        def __init__(self):
     
     
            root = Tk()
            bouton=Button(root,text='OK',command=self.enregistre) 
            bouton.pack()
            root.mainloop()
     
            def enregistre(self):
     
                root.destroy()
     
     
    New_acr()

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 222
    Par défaut
    Tu as un problème d'indendation, ta méthode enregistre se trouve dans la méthode __init__. De plus si tu veux utiliser root dans d'autre méthode il ne faut pas oublier le self.root. voici un exemple:

    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
     
    from Tkinter import *
     
    class New_acr:
        def __init__(self, root):
            self.root = root
            Button(self.root,text='OK',command=self.enregistre).pack()
     
        def enregistre(self):
            self.root.destroy()
     
     
     
    root = Tk()
    app = New_acr(root)
    root.mainloop()
    mais tu peux appeler la methode destroy() directement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    from Tkinter import *
     
    class New_acr:
        def __init__(self, root):
            Button(root, text='OK', command=root.destroy).pack()
     
     
    root = Tk()
    app = New_acr(root)
    root.mainloop()

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 32
    Par défaut
    Merci,
    en fait je voudrais pouvoir détruire l'objet fenêtre qui est crée dans cette classe
    Je ne sait pas comment procéder.
    Le main ouvre une fenêtre,le bouton renvoie à l'enregistrement de données et parallèlement à une fonction dans cette classe qui ferme la fenêtre.
    L'ensemble étant inclus dans la même classe.

  9. #9
    Membre chevronné
    Homme Profil pro
    Responsable du parc et des réseaux de télécommunication
    Inscrit en
    Mai 2003
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable du parc et des réseaux de télécommunication
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2003
    Messages : 290
    Par défaut
    Bonjour,
    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
    from Tkinter import *
     
    class New_acr:
        def __init__(self):
     
            self.root = Tk()
            bouton=Button(self.root,text='OK',command=self.enregistre) 
            bouton.pack()
            self.root.mainloop()
     
        def enregistre(self):
     
            self.root.destroy()
     
    New_acr()

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 32
    Par défaut
    Merci mais j'ai un nouveau pb,
    Du main j'appelle la classe par from New_acr import *
    et quand je lance le programme la fenêtre crée dans cette classe s'affiche en 1er alors qu'elle ne devrait apparaitre qu'à la déclaration de l'instance
    n=New_acr.

  11. #11
    Membre expérimenté
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 222
    Par défaut
    As tu enlevé le New_arc() à la fin de ton fichier New_arc.py?

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 32
    Par défaut
    Ça marche impec.
    Merci beaucoup
    Çà rentre,ça rentre...
    A+

Discussions similaires

  1. Réponses: 11
    Dernier message: 03/05/2006, 01h24
  2. Problème avec une fonction date.
    Par kmayoyota dans le forum ASP
    Réponses: 8
    Dernier message: 09/09/2004, 12h33
  3. Thread avec une fonction membre d'une classe
    Par SteelBox dans le forum Windows
    Réponses: 6
    Dernier message: 01/03/2004, 01h15
  4. Retourner une valeur avec une fonction
    Par stephtbest dans le forum ASP
    Réponses: 4
    Dernier message: 31/10/2003, 16h37
  5. [VBA-E] avec une fonction value
    Par laas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/11/2002, 13h22

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