Получение и передача последнего события 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))

0 ответов

Другие вопросы по тегам