<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">Since changing usually happens only when typing *or* pasting, you could "save" the current contents by overriding keyPressEvent and insertFromMimeData.</div><div dir="ltr">Something like this (the implementation depends on what you actually need to do afterwards):</div><div dir="ltr"><div><br></div><div><div><font face="monospace">class Editor(QtWidgets.QPlainTextEdit):</font></div><div><font face="monospace">    def __init__(self):</font></div><div><font face="monospace">        super().__init__()</font></div><div><font face="monospace"><br></font></div><div><font face="monospace">        self.setPlainText('abc')</font></div><div><font face="monospace">        self.storePreviousContent()</font></div><div><font face="monospace"><br></font></div><div><font face="monospace">    def storePreviousContent():</font></div><div><font face="monospace">        self.previous_text = self.toPlainText()</font></div><div><font face="monospace">        self.previous_position = self.textCursor().position()</font></div><div><font face="monospace"><br></font></div><div><font face="monospace">    def insertFromMimeData(self, source):</font></div><div><font face="monospace">        self.storePreviousContent()</font></div><div><font face="monospace">        super().insertFromMimeData(source)</font></div><div><font face="monospace"><br></font></div><div><font face="monospace">    def keyPressEvent(self, event):</font></div><div><font face="monospace">        self.storePreviousContent()</font></div><div><font face="monospace">        super().keyPressEvent(event)</font></div></div><div><br></div><div>Maurizio</div></div></div></div></div></div></div></div>