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
Dans un second temps je veux juste changer le texte du label et afficher bienvenue lorsque je survole la fenetre en mettant ceciCode:
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()
mais python cesse de fonctionner et je ne sais pas pourquoi.Code:
1
2 def mouseMoveEvent(self, event): self.lbl.setText("va y")
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
mais ici mon évènement ne fonctionne pas. Ce qui m'emmene à poser ces questions.Code:
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()
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