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

PyQt Python Discussion :

Problème à la fermeture de l'application


Sujet :

PyQt Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 491
    Par défaut Problème à la fermeture de l'application
    bonjour,
    lorsque je ferme mon application en cliquant sur le bouton croix de la fenêtre , je voudrais réaliser quelques commandes avant cette fermeture
    j'ai trouvé ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    app.connect(app,SIGNAL("lastWindowClosed()"),app,SLOT("quit()"))
    j'ai mis mes instructions dans la fonction quit(), mais visiblement j'ai tout faux

  2. #2
    Expert confirmé

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

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

    Il faut surcharger la méthode closeEvent de QMainWindow

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        def closeEvent(self, event):
            #..  fait ce qu'il faut
     
            # On termine avec ceci pour éviter une erreur de segmentation
            QtCore.QCoreApplication.processEvents()
            sys.exit()
    Ici self est l'instance de QMainWindow

  3. #3
    Membre émérite
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 491
    Par défaut
    merci pour la réponse,
    mais je n'y arrive pas; j'ai rajouté la fonction dans ma classe en rajoutant les instructions à faire
    mais rien ne se passe
    pour info j'ai utilisé qt designer pour réaliser ma fenêtre j'ai crée un fichier du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    from ESSAI02M import * #le fichier py généré par pyiuc4
    class myApp(QMainWindow, Ui_MainWindow): 
            # Note : ici self représente la classe
            def __init__(self, parent=None):
                    QMainWindow.__init__(self) 
                    self.setupUi(parent)
    #....
            def closeEvent(self, event):
     
                    print "au revoir"
     
                    # On termine avec ceci pour éviter une erreur de segmentation
                    QtCore.QCoreApplication.processEvents()
                    sys.exit()

  4. #4
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Corrections suggérées:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            def __init__(self, parent=None):
                    super(myApp, self).__init__(parent)
                    self.setupUi(self)
    et:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        def closeEvent(self, event):
            ...
            ...
            # acceptation de la fermeture
            event.accept()

  5. #5
    Membre émérite
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 491
    Par défaut
    bonjour tyrtamos,

    j'ai toujours le même problème l'instruction print ne s'effectue pas à la fermeture

  6. #6
    Expert confirmé

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Parce que closeEvent n'est pas méthode de ta QMainWindow.

    Ceci est dut à la manière dont tu crées ta fenêtre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    class myApp(QMainWindow, Ui_MainWindow)
    Qu'est-ce-que ce Ui_MainWindow ? Le problème est là à coup sur.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème de fermeture de l'application
    Par allanibu dans le forum Langage
    Réponses: 5
    Dernier message: 15/09/2008, 12h03
  2. Problème de fermeture de l'application
    Par devat27 dans le forum Langage
    Réponses: 9
    Dernier message: 20/03/2008, 12h05
  3. [VB2005] Problème de fermeture de l'application
    Par exclusif dans le forum Windows Forms
    Réponses: 2
    Dernier message: 14/08/2006, 15h32
  4. [C#] problème de fermeture d'une application
    Par padodanle51 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 30/05/2006, 14h07
  5. Problème de fermeture de l'application
    Par SkyDev dans le forum Langage
    Réponses: 2
    Dernier message: 16/06/2004, 02h06

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