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 :

fermeture de l'application


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Août 2017
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : retraité
    Secteur : Service public

    Informations forums :
    Inscription : Août 2017
    Messages : 30
    Par défaut fermeture de l'application
    Bjr,

    Je réalise une application avec plusieurs classes : menu, contenu de la fenêtre(labels, boutons, frames) et méthodes, programme principal.
    Je n'arrive pas à fermer l'application à partir du menu ou du bouton.
    Quel est le code ?

    Merci

    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
     
    from tkinter import *
     
    class MenuBar(Frame):
     
        def __init__(self, boss =None):
            Frame.__init__(self, borderwidth =2, relief =GROOVE)
     
            fileMenu = Menubutton(self, text ='Fichier')
            fileMenu.pack(side =LEFT, padx =5)
            me1 = Menu(fileMenu)
            me1.add_command(label ='Terminer', underline =0,
                            command = boss.quit())
            fileMenu.configure(menu = me1)
     
            helpMenu = Menubutton(self, text ='Aide')
            helpMenu.pack(side =LEFT, padx =5)
            me1 = Menu(helpMenu)
            me1.add_command(label ='A propos ...', underline =0,
                            command = boss.aPropos)
            helpMenu.configure(menu = me1)
     
    class Affichage(Frame):
        def __init__(self, boss =None):        
            Frame.__init__(self)        
     
            self.can = Canvas(self, width =335, height =70,relief=RAISED, bg ='yellow',bd=2) 
            self.can.pack(side =TOP, padx =5)
     
            lb1=Label(self,image=self.igm,bg ='#25FDE9',width=300,height=60).place(x=x-135,y=y-75)
            Label(self,text="Score : ",bg='black',fg='red',font='Arial 8').place(x=x+50,y=y-50)                        
     
            ........
     
            self.fram1 = Frame(self,relief=SUNKEN,bg='white',bd=5,padx=35)
            self.fram1.pack()
     
            self.fram2 = Frame(self,relief=RAISED,bg='#77B5FE',bd=5)
            self.fram2.pack(pady=5)
            self.bt6=Button(self.fram2,text='Quitter',command=boss.fermer)
            self.bt6.pack(side=LEFT,padx=25)
            bt1=Button(self.fram2,image=self.photo,command=self.nxJeu,relief =RIDGE,bd=3).pack(side=RIGHT,padx=25)
     
        def nxJeu(self):         
            ....
     
     
    class ProgPrincl(Frame):
     
        def __init__(self):
            Frame.__init__(self)
            self.master.geometry("340x400")
            self.master.title(" Jeu de Quizz")
            self.mbar = MenuBar(self)
            self.mbar.pack(side =TOP, expand =NO, fill =X)
            self.jeu =Affichage(self)
            self.jeu.pack() 
            self.pack()       
     
        def aPropos(self):
            msg =Toplevel(self)
            Message(msg, width =200, aspect =100, justify =CENTER,
                text ="Jeu de ...
                "Licence = GPL").pack(padx =10, pady =10)
     
        def fermer(self):
     
            ????????
     
     
    if __name__ == '__main__':
        ProgPrincl().mainloop()

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

    Normalement, il faut appeler la méthode .quit() pour sortir de la mainloop.
    Côté menu, la ligne 12:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    me1.add_command(label ='Terminer', underline =0,
                            command = boss.quit())
    ne fonctionne pas car boss.quit() sera exécuté bien avant d'entrer dans la mainloop.
    Et ce sera le retour de la fonction (i.e. None) qui sera passé en paramètre: les appels suivant ne fonctionneront pas.
    La fonction qui doit être appelée est boss.quit (sans les () sinon on passe le retour la fonction).

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

  3. #3
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Août 2017
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : retraité
    Secteur : Service public

    Informations forums :
    Inscription : Août 2017
    Messages : 30
    Par défaut quit
    Désolé, j'ai essayé, ca ne marche pas, la fenêtre reste ouverte.

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 695
    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 695
    Par défaut
    Citation Envoyé par bern59 Voir le message
    Désolé, j'ai essayé, ca ne marche pas, la fenêtre reste ouverte.
    Pour essayer, il faut commencer par écrire quelques lignes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    import tkinter as tk
     
    root = tk.Tk()
    tk.Button(root, text='Quit', command=root.quit).pack()
    tk.mainloop()
    print('on sort')
    après avoir lu la documentation sur mainloop et quit pour s'assurer que çà ne fonctionne pas par hasard mais que çà a été construit pour.
    Une fois qu'on est confiant sur ce qu'il faut faire, il faut essayer de l'intégrer dans le programme de départ. Et si çà ne fonctionne pas, c'est pas parce que "çà ne marche pas" mais que vous n'avez peut être pas codé cela comme il le faudrait.
    Auquel cas, si vous ne postez pas votre code, pas facile de comprendre dans quel piège vous êtes tombé.

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

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

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617

  6. #6
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Août 2017
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : retraité
    Secteur : Service public

    Informations forums :
    Inscription : Août 2017
    Messages : 30
    Par défaut code
    Citation Envoyé par marco056 Voir le message
    ce code existe déjà dans la ligne de code du menu et ne fonctionne pas.

  7. #7
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Août 2017
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : retraité
    Secteur : Service public

    Informations forums :
    Inscription : Août 2017
    Messages : 30
    Par défaut code
    Citation Envoyé par wiztricks Voir le message
    Pour essayer, il faut commencer par écrire quelques lignes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    import tkinter as tk
     
    root = tk.Tk()
    tk.Button(root, text='Quit', command=root.quit).pack()
    tk.mainloop()
    print('on sort')
    après avoir lu la documentation sur mainloop et quit pour s'assurer que çà ne fonctionne pas par hasard mais que çà a été construit pour.
    Une fois qu'on est confiant sur ce qu'il faut faire, il faut essayer de l'intégrer dans le programme de départ. Et si çà ne fonctionne pas, c'est pas parce que "çà ne marche pas" mais que vous n'avez peut être pas codé cela comme il le faudrait.
    Auquel cas, si vous ne postez pas votre code, pas facile de comprendre dans quel piège vous êtes tombé.

    - W
    Avez-vous lu l'extrait de code que j'ai posté ?
    Je crains que votre réponse ne s'intègre pas au mien.
    Votre doc me semble sommaire.

  8. #8
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 695
    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 695
    Par défaut
    Citation Envoyé par bern59 Voir le message
    Avez-vous lu l'extrait de code que j'ai posté ?
    Je crains que votre réponse ne s'intègre pas au mien.
    Je me suis contenté de vous montrer comment çà doit fonctionner après vous avez un travail de compréhension à faire pour pouvoir l'intégrer dans votre code...
    Et si vous ne postez pas ce que vous avez essayé de faire (tenant compte de cela)... difficile de savoir ce que vous n'avez pas compris.

    Citation Envoyé par bern59 Voir le message
    Votre doc me semble sommaire.
    Cette discussion collecte les différentes documentations existantes. La documentation la plus complète est ici mais elle a été écrite pour les programmeurs TCL/Tk


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

Discussions similaires

  1. Fermeture de l'application
    Par jagboys dans le forum MFC
    Réponses: 9
    Dernier message: 13/07/2005, 09h48
  2. Mysql et fermeture de l'application
    Par fredero dans le forum Bases de données
    Réponses: 3
    Dernier message: 08/05/2005, 20h16
  3. [Event]Annuler la fermeture d'une application
    Par willowII dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 16/11/2004, 09h28
  4. Problème de fermeture de l'application
    Par SkyDev dans le forum Langage
    Réponses: 2
    Dernier message: 16/06/2004, 02h06
  5. bouton ENTER = fermeture de l'application
    Par bigboomshakala dans le forum MFC
    Réponses: 2
    Dernier message: 10/05/2004, 11h14

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