Вы можете установить eventFilter и запретить передачу ключа.
import sys
from PyQt5.QtWidgets import QApplication, QPlainTextEdit
from PyQt5.QtCore import QObject, Qt, QEvent
class Helper(QObject):
def disable_key(self, w, key):
self.m_w = w
self.m_w.installEventFilter(self)
self.m_key = key
def eventFilter(self, obj, event):
if obj == self.m_w and event.type() == QEvent.KeyPress:
if event.key() == self.m_key:
return True
return QObject.eventFilter(self, obj, event)
if __name__ == '__main__':
app = QApplication(sys.argv)
helper = Helper()
view = QPlainTextEdit()
helper.disable_key(view, Qt.Key_A)
view.show()
sys.exit(app.exec_())
или буквой:
import sys
from PyQt5.QtWidgets import QApplication, QPlainTextEdit
from PyQt5.QtCore import QObject, Qt, QEvent
class Helper(QObject):
def disable_key(self, w, letter):
self.m_w = w
self.m_w.installEventFilter(self)
self.m_letter = letter
def eventFilter(self, obj, event):
if obj == self.m_w and event.type() == QEvent.KeyPress:
if event.text() == self.m_letter:
return True
return QObject.eventFilter(self, obj, event)
if __name__ == '__main__':
app = QApplication(sys.argv)
helper = Helper()
view = QPlainTextEdit()
helper.disable_key(view, "a")
view.show()
sys.exit(app.exec_())