PyQt重载按键事件 保留原按钮功能
本身实现技术并不难,但是几个搜索引擎并不容易找到,故在此记录一下,方便大家实现方法参考:https://blog.csdn.net/mahuatengmmp/article/details/118758281同时也推荐一下这个文章的其他部分,节点编辑器实现的效果还是不错的下面是正文
在PyQt5中直接重载某一控件的keyPressEvent函数,会导致控件原来功能的快捷键失效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
但这样实现的话会导致输入框原本的键盘功能(如左右键调节光标,退格键删除字符)失效此问题可以通过调用父类方法解决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)这样问题就解决了
页:
[1]