透明地在PyQt中获取退格事件

时间:2019-02-23 21:35:34

标签: python pyqt pyqt5 qplaintextedit

我想检测QPlainTextEdit小部件中何时按下退格键。

我有以下代码:

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

(在从QPlainTextEdit继承的类中)

问题在于,现在按退格键(或任何其他字符键)无法将字符插入文本框中。我可以检查每个键并以这种方式进行操作,但是,特别是对于大文件,删除最后一个字符可能会效率低下,效率低下并导致代码混乱。

有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

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_())