2

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

我有以下代码:

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

(在继承自 QPlainTextEdit 的类中)

问题是现在按退格键(或任何其他字符键)不会将字符插入文本框中。我可以检查每个键并这样做,但是,特别是对于大文件,删除最后一个字符可能效率低下、速度慢并导致代码混乱。

有没有更好的方法来做到这一点?

4

1 回答 1

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_())
于 2019-02-23T21:42:37.310 回答