透明地在PYQT中获得Backpace事件



我想检测何时在qplaintextedit小部件中按下backspace。

我有以下代码:

    def keyPressEvent(self, event):
        if event.key() == QtCore.Qt.Key_Backspace:
            print("Backspace pressed")

(在从qplaintextedit继承的类中)

问题是,现在按BackSpace(或任何其他字符键)不会将字符插入文本框中。我可以检查每个键并以这种方式进行操作,尤其是在大文件中,删除最后一个字符的效率低下,缓慢且导致凌乱的代码。

有更好的方法吗?

qplaintExtedIt的keypressevent方法已经具有一定的行为,除其他方面是添加文本,但是当您覆盖它时,您正在消除它,因此解决方案是调用实现父母不要消除这种行为

from PyQt5 import QtCore, QtWidgets
class PlainTextEdit(QtWidgets.QPlainTextEdit):
    def keyPressEvent(self, event):
        if event.key() == QtCore.Qt.Key_Backspace:
            print("Backspace pressed")
        super(PlainTextEdit, self).keyPressEvent(event)
if __name__ == '__main__':
    import sys
    app = QtWidgets.QApplication(sys.argv)
    w = PlainTextEdit()
    w.show()
    sys.exit(app.exec_())

最新更新