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 :

Probleme avec QEvent


Sujet :

PyQt Python

  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 Probleme avec QEvent
    Salut à tous. j'ai un problème avec la classe QEvent.
    1. Voici un code ou j'ai construis un QWidget à partir d'une classe et dans cette classe j'ai défini un évènement mousMoveEvent.
    Dans un premier temps il doit juste imprimer un texte lors du survol de la souris, ce qui marche bien
    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
     
    import sys
    from PyQt5.QtWidgets import QWidget, QApplication, QPushButton,  QMessageBox, QLineEdit, QLabel
     
    #########################################
     
    class My_Window(QWidget):
        def __init__(self, parent = None):
            super().__init__()
            self.setWindowTitle("Ma nouvelle fenetre")
            self.setGeometry(500,200,500,400)
            self.setMouseTracking(True)
     
            btn = QPushButton("Appuyer ici",self)
            btn.setGeometry(150,250,200,70)
            btn.clicked.connect(myDialog)
     
            lbl = QLabel("Affiche ici", self)
            lbl.setGeometry(200,10,200,70)
     
            textbox = QLineEdit(self)
            textbox.setGeometry(100,100,300,40)
     
        def mouseMoveEvent(self, event):
            #self.lbl.setText("va y")
            print("Vous voyez cela imprime lorsque je suis dans la classe")
     
     
    def myDialog():
        msg = QMessageBox()
        msg.setIcon(QMessageBox.Information)
        msg.setWindowTitle("Titre de ma boite de dialogue")
        msg.setText("Vous avez organise quoi comme ca")
        msg.setInformativeText("Ici cest le informative text")
        msg.setStandardButtons(QMessageBox.Ok|QMessageBox.Cancel|QMessageBox.Retry)
        msg.setDefaultButton(QMessageBox.Yes)
        msg.setDetailedText("Ici nous allons mettre les details \n  de notre visis")
        btn = msg.button(QMessageBox.Cancel)
        btn.setText("Texte changé avec succes")
        msg.exec_()
     
        msg.setMouseTracking(True)
     
     
     
    if __name__=="__main__":
     
     app = QApplication(sys.argv)
     
     w = My_Window()
     
     w.show()
     app.exec()
    Dans un second temps je veux juste changer le texte du label et afficher bienvenue lorsque je survole la fenetre en mettant ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        def mouseMoveEvent(self, event):
            self.lbl.setText("va y")
    mais python cesse de fonctionner et je ne sais pas pourquoi.
    2. Par la suite pour comprendre le fonctionnement d'évènement, j'ai élaboré une fenetre mais cette fois ci pas dans une classe dont voici le 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
    import sys
    from PyQt5.QtWidgets import*
    #################################################"
     
    def mousMoveEvent(event):
        print("bienvenue")
        #lbl.setText("Bienvenue")
     
     
    app = QApplication(sys.argv)
    fen = QWidget()
     
    lbl = QLabel("texte à changer pour souhaiter bienvenue", fen)
    textbox = QLineEdit(fen)
    btn = QPushButton("Valider", fen)
     
    layout = QVBoxLayout(fen)
    layout.addWidget(lbl)
    layout.addWidget(textbox)
    layout.addWidget(btn)
     
    fen.show()
    fen.setMouseTracking(True)
     
    app.exec()
    mais ici mon évènement ne fonctionne pas. Ce qui m'emmene à poser ces questions.
    Est ce que les évènements ne fonctionnent que lorsqu'elles sont définies dans les classes?
    Pourquoi ca ne fonctionne pas lorsqu'on les lie à des widgets qui ne sont pas crées par des classes?
    Merci et mes excuses pour la longueur du problème

  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,

    Si tu lançais ton code dans un terminal, tu aurais pu voir que My_Window n'a pas d'attribut lbl.

    Tous les widgets doivent être des attributs de l'instance de ta classe. Du moins si tu veux pouvoir y accéder.
    Donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            self.btn = QPushButton("Appuyer ici",self)
            self.lbl = QLabel("Affiche ici", self)
            self.textbox = QLineEdit(self)
    Pour ta deuxième question, mouseMoveEvent ne sort pas de nulle part, c'est un attribut de QWidget (oui, les méthodes sont aussi des attributs) et donc en dehors d'une classe ça n'a aucune utilité.

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

Discussions similaires

  1. Probleme avec la copie des surfaces
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/01/2003, 10h33
  2. Problèmes avec le filtrage des ip
    Par berry dans le forum Réseau
    Réponses: 9
    Dernier message: 30/12/2002, 07h51
  3. probleme avec la touche F10
    Par b.grellee dans le forum Langage
    Réponses: 2
    Dernier message: 15/09/2002, 22h04
  4. Probleme avec fseek
    Par Bjorn dans le forum C
    Réponses: 5
    Dernier message: 04/08/2002, 07h17
  5. [Kylix] probleme avec un imagelist
    Par NicoLinux dans le forum EDI
    Réponses: 4
    Dernier message: 08/06/2002, 23h06

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