下面是正文
在PyQt5中直接重载某一控件的keyPressEvent函数,会导致控件原来功能的快捷键失效[Python] 纯文本查看 复制代码class specialEdit(QLineEdit):
def __init__(self, parent):
super(specialEdit, self).__init__(parent)
def keyPressEvent(self, key_event:QtGui.QKeyEvent):
'''
重写键盘的全选,复制粘贴
:param key_event:
:return:
'''
if key_event == QtGui.QKeySequence.SelectAll: #禁止全选
print('不要全选哦~')
return
elif key_event == QtGui.QKeySequence.Paste: #禁止粘贴
print('不要粘贴哦~')
return
elif key_event == QtGui.QKeySequence.Copy: #禁止复制
print('不要复制哦~')
return
但这样实现的话会导致输入框原本的键盘功能(如左右键调节光标,退格键删除字符)失效此问题可以通过调用父类方法解决[Python] 纯文本查看 复制代码class specialEdit(QLineEdit):
def __init__(self, parent):
super(specialEdit, self).__init__(parent)
def keyPressEvent(self, key_event:QtGui.QKeyEvent):
'''
重写键盘的全选,复制粘贴
:param key_event:
:return:
'''
if key_event == QtGui.QKeySequence.SelectAll: #禁止全选
print('不要全选哦~')
return
elif key_event == QtGui.QKeySequence.Paste: #禁止粘贴
print('不要粘贴哦~')
return
elif key_event == QtGui.QKeySequence.Copy: #禁止复制
print('不要复制哦~')
return
else:
super().keyPressEvent(key_event)这样问题就解决了