Bonjour,
J'ai un souci avec un QTextEdit et l'appui sur la touche Entrée.
Je souhaite, lorsque le focus et dans celui ci que l'action sur un bouton envoyer soit déclenché.
J'ai pas mal regardé sur le web, mais je ne trouve pas de solution à mon pb.
J'ai regardé la solution ici qui prend très bien mon appui sur la touche entré, mais je n'arrive pas a appelé ma fonction qui gère le click sur le bouton.
Voici le code de ma fenêtre généré par QtDesigner
et le code de l'appli
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 from PyQt5 import QtCore, QtGui, QtWidgets class Ui_f_client(object): def setupUi(self, f_client): f_client.setObjectName("f_client") f_client.resize(800, 600) self.te_msg_send = QtWidgets.QTextEdit(self.centralwidget) self.te_msg_send.setGeometry(QtCore.QRect(130, 490, 621, 101)) self.te_msg_send.setObjectName("te_msg_send") self.b_send = QtWidgets.QPushButton(self.centralwidget) self.b_send.setGeometry(QtCore.QRect(755, 510, 41, 61)) self.b_send.setObjectName("b_send") f_client.setCentralWidget(self.centralwidget) self.retranslateUi(f_client) QtCore.QMetaObject.connectSlotsByName(f_client) def retranslateUi(self, f_client): _translate = QtCore.QCoreApplication.translate f_client.setWindowTitle(_translate("f_client", "Home Chat")) self.b_connect.setText(_translate("f_client", "Connect")) self.lbl_connect_to.setText(_translate("f_client", "Connect to :")) self.b_send.setText(_translate("f_client", "Send")) self.lbl_name.setText(_translate("f_client", "Name :")) self.b_stop.setText(_translate("f_client", "Stop"))
la référence au thread fonction. Quand je clique sur le bouton send, le comportement est ok.
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 class FenPrincipal(QtWidgets.QMainWindow, Vue.vclient.Ui_f_client): def __init__(self, parent=None): super(FenPrincipal, self).__init__(parent) self.setupUi(self) self.b_send.clicked.connect(self.Send) self.te_msg_send.__class__ = MonTextEdit def Send(self, val="a"): #Envoi du message if self.leThread.is_alive(): self.leThread.messagetosend(self.te_msg_send.toPlainText()) #vide la zone de saisie self.te_dialogue.appendPlainText(self.te_msg_send.toPlainText()) self.te_msg_send.setText("") class MonTextEdit(QtWidgets.QTextEdit): def keyPressEvent(self, event): if event.key() == QtCore.Qt.Key_Enter or event.key() == QtCore.Qt.Key_Return: #FenPrincipal.Send() pass else: return super().keyPressEvent(event) if __name__ == "__main__": app = QtWidgets.QApplication(sys.argv) MainWindow = FenPrincipal() MainWindow.show() sys.exit(app.exec_())
Mon problème ce trouve lorsque je veux faire le raccourci entre la touche entré et le clic sur le bouton.
Merci pour vos retour
eskehnach
Partager