在PyQ中透明地获取backspace事件

2024-06-17 11:59:08 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我有以下代码:

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

(在从QPlainTextEdit继承的类中)

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

有更好的方法吗?在


Tags: key代码selfeventif部件defqt
1条回答
网友
1楼 · 发布于 2024-06-17 11:59:08

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

相关问题 更多 >