Reputation: 327
Why, when I press Enter, does the keyPressEvent
method not do what I need? It just moves the cursor to a new line.
class TextArea(QTextEdit):
def __init__(self, parent):
super().__init__(parent=parent)
self.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
self.show()
def SLOT_SendMsg(self):
return lambda: self.get_and_send()
def get_and_send(self):
text = self.toPlainText()
self.clear()
get_connect(text)
def keyPressEvent(self, event):
if event.key() == QtCore.Qt.Key_Enter:
self.get_and_send()
else:
super().keyPressEvent(event)
Upvotes: 6
Views: 21941
Reputation: 75
My grain of salt to complement the answers from @warvariuc and @tCot. A bit more pythonic:
def keyPressEvent(self, qKeyEvent):
if qKeyEvent.key() in (QtCore.Qt.Key_Return, QtCore.Qt.Key_Enter):
pass # your code
else:
super().keyPressEvent(qKeyEvent)
Upvotes: 0
Reputation: 367
def keyPressEvent(self, event):
if (event.key() == 16777220) or (event.key() == 43): # for main keyboard and keypad
Works for my keyboard.
Upvotes: 0
Reputation: 59674
Qt.Key_Enter
is the Enter located on the keypad:
Qt::Key_Return 0x01000004
Qt::Key_Enter 0x01000005 Typically located on the keypad.
Use:
def keyPressEvent(self, qKeyEvent):
print(qKeyEvent.key())
if qKeyEvent.key() == QtCore.Qt.Key_Return:
print('Enter pressed')
else:
super().keyPressEvent(qKeyEvent)
Upvotes: 9