utilisation de KeyPressEvent dans un QText Edit
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
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 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")) |
et le code de l'appli
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 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_()) |
la référence au thread fonction. Quand je clique sur le bouton send, le comportement est ok.
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