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 :

attendre la fermeture d'une fenetre secondaire


Sujet :

PyQt Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 563
    Par défaut attendre la fermeture d'une fenetre secondaire
    Bonsoir

    Je souhaiterai afficher une fenetre secondaire, attendre sa fermeture et continuer le travail.

    Le soucis c'est qu'il affiche la fenetre 2e et continue le travail directement.

    La 2e fenetre est de type modale.

    Fenetre secondaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    class SubtitlesRecognition(QMainWindow):
        def __init__(self, parent=None):
            super(SubtitlesRecognition, self).__init__(parent)
            self.sub = Ui_subtitles_window()
     
            self.sub.setupUi(self)
     
            self.sub.show()
    Et dans mon script python :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    .... # blaa bla bla
     
    SubtitlesRecognition(self)
     
    # Il faudrait que le script attende la fermeture de la fenetre avant de continuer
     
    print("ceci se passe apres l'edition")
     
    .... # blaa bla bla
    J'y arrive en utilisant une variable globale avec une boucle mais cela se met à consommer completement mon processseur...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SubtitlesRecognition(self)
     
    while var == "attend":
         pass
     
    print("ceci se passe apres l'edition")
    Je pense qu'en y ajoutant une pause cela consommerai moins mais bon...

    J'ai vu plein de trucs sur le net mais rien n'a fonctionné...

    Il semble (d’après des infos sur le net) qu'avec l'utilisation de exec ça soit bon...

    Merci à vous

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    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 738
    Par défaut
    Salut,
    "QMainWindow" est la fenêtre principale de l'application.

    Les autres "fenêtres" - celle qui ne sont pas des s/fenêtres de Main devraient être instances de s/classes de QWindow ou QModal.

    Si c'est une QModal, (modal).setModal(True) bloque l'utilisateur dans cette fenêtre de l'application jusqu’à ce qu'elle soit fermée.
    Et (modal).exec() attendra que ça se termine.

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

  3. #3
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 563
    Par défaut
    Merci pour la réponse mais je ne pige pas ce que sont QWindow et QModal, je n'ai pas trouvé d'info dessus...

    Peux tu preciser un peu plus s'il te plait ?

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    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 738
    Par défaut
    Citation Envoyé par hizoka Voir le message
    Merci pour la réponse mais je ne pige pas ce que sont QWindow et QModal, je n'ai pas trouvé d'info dessus...
    Oops, effectivement QModal n'existe pas, cherchez plutôt QDialog et QWidget (sous Qt4)
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    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,

    Je ne saisis pas trop pourquoi tu crées une classe qui hérite de QMainWindow alors que tu ne devrais en avoir qu'une seule dans ton appli et qu'ensuite tu ne t'en sers que pour lancer cette seconde fenêtre.

    Si il s'agit simplement d'une fenêtre dont le résultat est attendu pour la poursuite de ton programme dans ce cas ce n'est ni plus ni moins qu'un dialogue.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    def call_subtitle_dialog(self):
        self.dial = QtGui.QDialog()
        sub = Ui_subtitles_window(self.dial)
        sub.setupUi()
        reply = self.dial.exec_()

  6. #6
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 563
    Par défaut
    En utilisant QDialog ca marche bien

    VinsS => Je crois que c'était suite aux tests qu'on faisait (enfin surtout moi vu la tronche du truc :p) avec tyrtamos pour la traduction complète des fenêtres.
    Et du coup je suis resté comme ça.

    Mais en effet ça ne sert à rien (mais ça fonctionne :p) et c'est plus compliqué.

    Merci à vous deux, ca marche niquel comme ça !

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

Discussions similaires

  1. Comment attendre la fermeture d'une fenetre fille?
    Par Jorodan dans le forum GTK+ avec C & C++
    Réponses: 4
    Dernier message: 09/05/2007, 08h58
  2. [debutant] Pb fermeture d une fenetre
    Par yup dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 21/06/2006, 17h48
  3. [ApplicationFrame][jfreechart]fermeture d'une fenetre
    Par cmoa59 dans le forum Agents de placement/Fenêtres
    Réponses: 32
    Dernier message: 15/06/2005, 10h41
  4. evenement a la fermeture d' une fenetre
    Par Sh. dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 16/03/2005, 13h30
  5. Detecter la fermeture d'une fenetre MsDos
    Par Akta3d dans le forum C++Builder
    Réponses: 2
    Dernier message: 13/07/2004, 16h53

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