在 PyQt 中透明地获取退格事件
Transparently get backspace event in PyQt
我想检测何时在 QPlainTextEdit 小部件中按下退格键。
我有以下代码:
def keyPressEvent(self, event):
if event.key() == QtCore.Qt.Key_Backspace:
print("Backspace pressed")
(在继承自 QPlainTextEdit 的 class 中)
问题是现在按退格键(或任何其他字符键)不会将字符插入到文本框中。我可以检查每个键并以这种方式进行,但是,尤其是对于大文件,删除最后一个字符可能效率低下、速度慢并导致代码混乱。
有更好的方法吗?
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_())
我想检测何时在 QPlainTextEdit 小部件中按下退格键。
我有以下代码:
def keyPressEvent(self, event):
if event.key() == QtCore.Qt.Key_Backspace:
print("Backspace pressed")
(在继承自 QPlainTextEdit 的 class 中)
问题是现在按退格键(或任何其他字符键)不会将字符插入到文本框中。我可以检查每个键并以这种方式进行,但是,尤其是对于大文件,删除最后一个字符可能效率低下、速度慢并导致代码混乱。
有更好的方法吗?
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_())