Получение и передача последнего события QKeyEvent, созданного в PyQt5, через соединение textChanged
Здравствуйте, я использую PyQt5.QTextEdit()
и я хочу связатьtextChanged()
кудаself._backspaceissue()
определяется как:
@pyqtSlot(QKeyEvent)
def _backspaceissue(self,event):...
Я увидел этот вопрос и подумал, что он может применяться, но я не понимаю никаких его функций, поэтому не совсем уверен, может ли это помочь: https://stackoverflow.com/questions/45090982/passing-extra-arguments- сквозное соединение Здесь упоминается использованиеfunctools.partial()
илиlambda
но я не понимаю, как это может работать. Но прежде чем мы сможем это сделать, есть ли способ получить QKeyEvent, вызвавший textChanged?
Я попытался изучить__dir__
QTextEdit и не нашел ничего полезного и никакой документации по нему.
РЕДАКТИРОВАТЬ: я добавлю свой код для_backspaceissue()
иkeyPressEvent()
:
@pyqySlot(QKeyEvent)
def _backspaceissue(self,event):
try:
if event.key() == Qt.Key_Backspace:
if self.toPlainText().split('\n')[-1] == '' or self.toPlainText().split('\n')[-1] in self.disallowed_deletes:pass
else:super().keyPressEvent(event)
else:super().keyPressEvent(event)
except AttributeError:pass
def keyPressEvent(self, e) -> None:
a=QTextCursor(self.document())
self.last_event=e
match e.key():
case Qt.Key_Backspace:
#check if line is empty and if so do nothing else remove the last character
print("Backspace hit: TEXT="+self.toPlainText().split('\n')[-1])
if self.toPlainText().split('\n')[-1] == '' or self.toPlainText().split('\n')[-1] in self.disallowed_deletes:pass
else:super().keyPressEvent(e)
case Qt.Key_Return:
#take the line of text and push it up one line and print the output in the current line then display the next input
self.moveCursor(QTextCursor.End)
print(f"Enter hit: TEXT="+self.toPlainText().split('\n')[-1])
final_output=self._handleCommand(self.toPlainText().split('\n')[-1].removeprefix(self.prefix))
self.insertHtml('<br>' + final_output + f'<br>{self.prefix}')
case _:super().keyPressEvent(e)
Я хотел использовать что-то вроде этого:
self.textChanged.connect(partial(self._backspaceIssue, self.last_event))