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

问题描述 投票:1回答:1

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

我有以下代码:

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

(在继承自QPlainTextEdit的类中)

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

有没有更好的方法呢?

python pyqt pyqt5 qplaintextedit
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_())
© www.soinside.com 2019 - 2024. All rights reserved.