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 :

PyQt5 Liaison de fenêtre


Sujet :

PyQt Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2020
    Messages : 2
    Points : 1
    Points
    1
    Par défaut PyQt5 Liaison de fenêtre
    Tout d'abord bonjour à tous, alors j'ai un petit soucis étant un réel débutant en programmation python et également dans cette bibliothèques PyQt. (J'utilise PyCharm)

    Alors j'ai deux fenêtres que j'ai édité avec Qt Designer, Par la suite j'ai converti ces fichiers.ui en py grâce à la commande suivante: pyuic5 -x nomFichier.ui -o nomFichier.py
    Ma fenêtre principale se nomme : firstwindow.ui et la fenêtre que j'aimerais obtenir en appuyant sur un bouton se nommant : camerabtn se nomme : camera.ui
    Ma fenêtre principale est une MainWindow et la secondaire "camera" est un Widget.

    J'aurais pu ouvrir ma nouvelle fenêtre en modifiant et en ajoutant des lignes de codes dans les fichiers py qui ont était automatiquement générés mais comme je vais sûrement éditer encore mes fenêtres j'ai pas envie que mes signaux slots que j'ai rajouté disparaissent à chaque fois que je convertis mes fenêtre ui en py.

    J'ai donc décider de créer un nouveau files py qui me servira de "main". Mais même en me documentant et en recherchant je ne sais absolument pas comment faire pour ouvrir ma fenêtre "camera" en appuyant sur le bouton "camerabtn" qui est sur ma fenêtre principale "firstwindow" .

    je vous joint le programme "main" qui compile bien la fenêtre principale mais qui n'ouvre pas la seconde quand j'appuie sur le bouton. Merci à ceux qui pourront m'aider à pouvoir ouvrir cette deuxième fenêtre "camera"


    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
    from PyQt5 import QtWidgets, QtCore, QtGui, uic
    import sys
    import X
    from firstwindow import Ui_MainWindow
    from camera import Ui_Form
     
    class applicationIHM(QtWidgets.QMainWindow):
     
        def __init__(self):
            super(applicationIHM, self).__init__()
     
            self.ui = Ui_MainWindow()
            self.ui.setupUi(self)
     
     
    class applicationCAMERA(QtWidgets.QWidget):
     
        def __init__(self):
            super(applicationCAMERA, self).__init__()
     
            self.ui = Ui_Form()
            self.ui.setupUi(self)
            self.camerabtn.clicked.connect(self.secondscr)
        def secondscr(self):
            self.Form = QtWidgets.QWidget()
            self.ui = Ui_Form()
            self.ui.setupUi(Form)
            self.Form.show()
     
    def main():
        app = QtWidgets.QApplication(sys.argv)
        application = applicationIHM()
        application.show()
        sys.exit(app.exec_())
     
     
    if __name__ == "__main__":
        main()

  2. #2
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Tu te compliques la vie avec les héritages non justifiés et les noms des classes.

    Normalement, ceci devrait suffire.
    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
     
    class applicationIHM:
        def __init__(self):
            mw = QtWidgets.QMainWindow()
            self.ui = Ui_MainWindow()
            self.ui.setupUi(mw)
            self.ui.camerabtn.clicked.connect(self.secondscr)
            self.ui.show()
     
        def secondscr(self):
            form = QtWidgets.QWidget()
            self.camera = Ui_Form()
            self.camera.setupUi(form)
            self.camera.show()
     
    if __name__ == "__main__":
        app = QtWidgets.QApplication(sys.argv)
        application = applicationIHM()
        sys.exit(app.exec_())

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2020
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci de ta réponse rapide, aujourd'hui je suis sur un autre projet je ré attaque celui-ci demain je te donne juste le résultat j'ai simplement compilé. Pas cherché à comprendre, voilà les deux petites erreurs qui n'ont pas l'air vraiment méchante :
    Le programme :
    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
    # -*- coding: utf-8 -*-
    import sys
    from PyQt5 import QtCore, QtGui, QtWidgets
    from firstwindow import Ui_MainWindow
    from camera import Ui_Form
     
     
    class applicationIHM:
        def __init__(self):
            mw = QtWidgets.QMainWindow()
            self.ui = Ui_MainWindow()
            self.ui.setupUi(mw)
            self.ui.camerabtn.clicked.connect(self.secondscr)
            self.ui.show()
     
        def secondscr(self):
            form = QtWidgets.QWidget()
            self.camera = Ui_Form()
            self.camera.setupUi(form)
            self.camera.show()
     
     
    if __name__ == "__main__":
        app = QtWidgets.QApplication(sys.argv)
        application = applicationIHM()
        sys.exit(app.exec_())

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Traceback (most recent call last): line 26, in <module>
        application = applicationIHM()
     
    line 15, in __init__
        self.ui.show()
    AttributeError: 'Ui_MainWindow' object has no attribute 'show'

  4. #4
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Ha oui, c'est sur la MainWindow qu'il faut appeler le show.

    Mais alors gardes-en une référence:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    self.mw = QtWidgets.QMainWindow()
    ...
    self.mw.show()
    Et tu risques de devoir faire pareil avec le widget: self.form.show()

Discussions similaires

  1. [WD18] Liaison entre fenêtres
    Par johan0510 dans le forum WinDev
    Réponses: 3
    Dernier message: 16/04/2013, 17h02
  2. Réponses: 0
    Dernier message: 20/05/2010, 01h04
  3. [WD12E]Liaison entre deux fenêtres
    Par Bassemca dans le forum WinDev
    Réponses: 4
    Dernier message: 18/12/2008, 23h33
  4. Liaison popup avec fenêtre
    Par george258 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/03/2008, 22h38
  5. [Liaison popup vers fenêtre mère] Problème Mozilla
    Par bugalood dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 02/11/2005, 02h33

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