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 :

Emission et réception des signaux avec PyQt5


Sujet :

PyQt Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2020
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2020
    Messages : 25
    Par défaut Emission et réception des signaux avec PyQt5
    Salut j'ai une petite application que j'ai faite juste pour pouvoir comprendre le fonctionnement des signaux personnalisés avec PyQt5.
    j'ai une fenetre principal dérivée de la classe MyPrincipalWindow qui contient un bouton qui servira à afficher une seconde fentre dérivée de la classe SecondWindow. la seconde fenetre contient un bouton et une zone de texte.
    le but est de recupérer le contenu de la zone de texte de la seconde fenetre et de transmettre dans la zone de texte de la seconde fenetre. Je precise que j'aimerai faire cela avec un signal personnalisé en PyQt5. j'ai lu le tuto plutot pour PyQt4 et qui est tres différent de la facon d'implementer les signaux en PyQt5.
    voila mon code qui ne fonctionne pas
    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
     
    import sys
    from PyQt5 import QtCore, QtGui
    from PyQt5.QtWidgets import QWidget, QApplication, QLineEdit, QPushButton, QLabel
    from PyQt5.QtCore import pyqtSignal, QObject
     
    ##################################""""
     
    class MyNewSignal(QObject):
        mySignal = pyqtSignal()
     
    class SecondWindow(QWidget):
        def __init__(self, parent = None):
            super().__init__()
            self.parent = parent
            self.setWindowTitle("deuxieme fenetre")
            self.setWindowModality(2)
     
            self.btn2 = QPushButton("Transfer", self)
            self.btn2.setGeometry(100, 150, 200, 50)
     
            self.btn2.clicked.connect(self.transfer_valeurs)
            self.signal_class = MyNewSignal()
            self.signal_class.mySignal.connect(self.retrieveValues)
     
     
            self.textbox2 = QLineEdit(self)
            self.textbox2.setGeometry(100, 50, 200, 50)
     
        def retrieveValues(self):
            x = self.textbox2.text()
            self.mainWindow = MyPrincipalWindow()
            self.mainWindow.textbox1.setText(x)
     
        def transfer_valeurs(self):
            self.signal_class = MyNewSignal()
            self.signal_class.mySignal.emit()
     
    class MyPrincipalWindow(QWidget):
        def __init__(self, parent = None):
            super().__init__()
            self.parent = parent
            self.setWindowTitle("Ma fenetre principal")
            self.setFixedSize(700, 500)
     
            self.btn1 = QPushButton("Afficher deuxieme fenetre", self)
            self.btn1.clicked.connect(self.afficherFenetre)
            self.btn1.setGeometry(250,300,250,75)
     
            self.textbox1 = QLineEdit(self)
            self.textbox1.setGeometry(250,50,200,50)
     
        def afficherFenetre(self):
            self.save = SecondWindow(self)
            self.save.show()
     
     
    if __name__=="__main__":
     
        app = QApplication(sys.argv)
        fen = MyPrincipalWindow()
        fen.show()
     
        app.exec()
    Et svp aidez moi aussi comment lancer tout ce code dans un terminal car je suis dans pycharm

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

    J'ai corrigé votre code:
    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
    import sys
    from PyQt5 import QtCore, QtGui
    from PyQt5.QtWidgets import QWidget, QApplication, QLineEdit, QPushButton, QLabel
    from PyQt5.QtCore import pyqtSignal, QObject
     
    ##################################""""
     
    class MyNewSignal(QObject):
        mySignal = pyqtSignal()
     
    class SecondWindow(QWidget):
        def __init__(self, parent = None):
            super().__init__()
            self.parent = parent
            self.setWindowTitle("deuxieme fenetre")
            self.setWindowModality(2)
     
            self.btn2 = QPushButton("Transfer", self)
            self.btn2.setGeometry(100, 150, 200, 50)
     
            self.btn2.clicked.connect(self.transfer_valeurs)
            self.signal_class = MyNewSignal()
            self.signal_class.mySignal.connect(self.retrieveValues)
     
     
            self.textbox2 = QLineEdit(self)
            self.textbox2.setGeometry(100, 50, 200, 50)
     
        def retrieveValues(self):
            x = self.textbox2.text()
            #self.mainWindow = MyPrincipalWindow()
            self.parent.textbox1.setText(x)
     
        def transfer_valeurs(self):
            #self.signal_class = MyNewSignal()
            self.signal_class.mySignal.emit()
     
    class MyPrincipalWindow(QWidget):
        def __init__(self, parent = None):
            super().__init__()
            self.parent = parent
            self.setWindowTitle("Ma fenetre principal")
            self.setFixedSize(700, 500)
     
            self.btn1 = QPushButton("Afficher deuxieme fenetre", self)
            self.btn1.clicked.connect(self.afficherFenetre)
            self.btn1.setGeometry(250,300,250,75)
     
            self.textbox1 = QLineEdit(self)
            self.textbox1.setGeometry(250,50,200,50)
     
        def afficherFenetre(self):
            self.save = SecondWindow(self)
            self.save.show()
     
     
    if __name__=="__main__":
     
        app = QApplication(sys.argv)
        fen = MyPrincipalWindow()
        fen.show()
     
        app.exec()
    Je n'ai rien à vous raconter : c'est juste des bases de POO.

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

  3. #3
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2020
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2020
    Messages : 25
    Par défaut reponse
    Merci c'est gentil.

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

Discussions similaires

  1. Blockage des signaux avec blockSignals()
    Par julieng31 dans le forum Débuter
    Réponses: 2
    Dernier message: 27/05/2014, 15h24
  2. [AJAX] Réception des données avec POST
    Par Akim13 dans le forum AJAX
    Réponses: 18
    Dernier message: 20/12/2012, 13h19
  3. Réponses: 2
    Dernier message: 28/04/2010, 14h23
  4. [WD14] Réception des mails avec PJ
    Par gancau dans le forum WinDev
    Réponses: 4
    Dernier message: 09/10/2009, 15h47
  5. programmation des signaux avec c
    Par nanouchou dans le forum Linux
    Réponses: 12
    Dernier message: 09/01/2009, 16h57

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