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 de multi-fenêtre


Sujet :

PyQt Python

Vue hybride

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

    Informations forums :
    Inscription : Mai 2013
    Messages : 12
    Par défaut Problème de multi-fenêtre
    Bonjour, je vous explique mon problème :
    Lorsque je tente de créer une fenêtre tout va bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    W = Worksoft()
    loginApp = QtGui.QApplication(sys.argv)
    loginForm = QtGui.QWidget()
    W.loginWindowSetupUi(loginForm)
    loginForm.show()
    sys.exit(loginApp.exec_())
    La fenêtre est définie dans une fonction elle même contenue dans une classe avec toutes les fonctions (dont la prochaine fenêtre).

    Puis lorsque la fenêtre de login est passée avec succès, j'appelle la deuxième fenêtre :
    (A l'intérieur d'une fonction de la classe Worksoft)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    self.mainApp = QtGui.QApplication(sys.argv)
    self.MainWindow = QtGui.QMainWindow()
    self.mainWindowSetupUi(self.MainWindow)
    self.MainWindow.show()
    sys.exit(self.mainApp.exec_())
    L'interpréteur me gratifie d'une magnifique erreur :
    EOFError: [WinError 10054] Une connexion existante a dû être fermée par l'hôte distant

    En entier :

    Traceback (most recent call last):
    File "<string>", line 73, in execInThread
    File "<string>", line 44, in __call__
    File "C:\Program Files\PyScripter\Lib\rpyc.zip\rpyc\core\netref.py", line 196, in __call__
    File "C:\Program Files\PyScripter\Lib\rpyc.zip\rpyc\core\netref.py", line 71, in syncreq
    File "C:\Program Files\PyScripter\Lib\rpyc.zip\rpyc\core\protocol.py", line 431, in sync_request
    File "C:\Program Files\PyScripter\Lib\rpyc.zip\rpyc\core\protocol.py", line 379, in serve
    File "C:\Program Files\PyScripter\Lib\rpyc.zip\rpyc\core\protocol.py", line 337, in _recv
    File "C:\Program Files\PyScripter\Lib\rpyc.zip\rpyc\core\channel.py", line 50, in recv
    File "C:\Program Files\PyScripter\Lib\rpyc.zip\rpyc\core\stream.py", line 166, in read
    EOFError: [WinError 10054] Une connexion existante a dû être fermée par l'hôte distant
    Comment faire ?
    Merci d'avance

  2. #2
    Expert confirmé

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

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

    Tu ne peux instancier qu'une QApplication et une seule.

    Instancie là au tout début de ton code, idéalement là:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if __name__ == '__main__':
        app = QtGui.QApplication(sys.argv)
        ...
    et tu effaces la deuxième instance.

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 12
    Par défaut
    Merci Mais comment ça se présente exactement ?
    Je développe mon problème :
    J'ai une fenêtre principale mais avant d'y accéder, je dois lancer une fenêtre de login. Pour lancer la fenêtre de login (qui est un widget [Je ne sais pas si c'est la bonne méthode mais bon]), c'est relativement simple, je fais comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    app = QtGui.QApplication(sys.argv)
    loginForm = QtGui.QWidget()
    W = Worksoft()
    W.loginWindowSetupUi(loginForm)
    loginForm.show()
    sys.exit(app.exec_())
    Ensuite, sur la fenêtre de login, il y a un bouton Connexion qui est relié par un signal à une fonction login. Si le login est bon, il doit exécuter la fenêtre principale.
    En sachant que la classe héberge le constructeur de la fenêtre login (loginWindowSetupUi()) et le constructeur de la fenêtre principale (mainWindowSetupUi()). Quelle est la commande pour exécuter la fenêtre principale à partir de la fonction login ?

  4. #4
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Billets dans le blog
    15
    Par défaut


    Pour commencer, merci de penser à l'avenir à la balise [CODE], ça donne plus de visibilité aux codes.

    Ensuite pour revenir à ton problème je t'invite à lire cet article qui peut sûrement t'aider.

    Une autre manière de faire serait d'avoir une seule et unique fenêtre. Au démarrage de l'application tu affiches un conteneur avec les zones à renseigner pour se loguer. Si les tests sont bons alors tu détruits ce conteneur et ensuite tu affiches la vue principale de ton programme.

    Bonne continuation.
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 12
    Par défaut
    J'avais déjà regardé l'article qui malheureusement ne m'a pas aidé :/
    Et pour l'histoire des conteneurs ça à l'air interessant
    Pas trop dur à gérer ?
    J'ai au total 6 fenêtres déjà faites avec Tkinter à transcrire en PyQt4 :
    - Fenêtre de login
    - Fenêtre principale
    - Fenêtre d'administration
    - Fenêtre transaction
    - Fenêtre d'upload
    - Fenêtre information des prix

  6. #6
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Billets dans le blog
    15
    Par défaut
    PyQt est relativement simple d'utilisation, donc je pense que ça ira assez simplement.

    Ton souci sera surtout que tu vas t’apercevoir que tu peux faire des tas de trucs avec et que du coup tu vas vouloir faire plus de choses avec la nouvelle version de ton programme
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

Discussions similaires

  1. [WD17] Problème de focus Appli multi-fenêtre
    Par Jérôme .G dans le forum WinDev
    Réponses: 12
    Dernier message: 11/09/2013, 15h41
  2. Réponses: 0
    Dernier message: 05/09/2011, 15h16
  3. [WindowListener] Problème pour créé fenêtre
    Par dib258 dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 06/08/2005, 13h57
  4. Problème d'affichage: fenêtres (frames) vides!
    Par NdmaX dans le forum Agents de placement/Fenêtres
    Réponses: 6
    Dernier message: 12/07/2005, 21h23
  5. [Javascript] Problème avec une fenêtre popup.
    Par mika0102 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 18/05/2005, 10h50

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