PyQt重载按键事件 保留原按钮功能

查看 46|回复 0
作者:LeoWang2021   
本身实现技术并不难,但是几个搜索引擎并不容易找到,故在此记录一下,方便大家实现方法参考:https://blog.csdn.net/mahuatengmmp/article/details/118758281同时也推荐一下这个文章的其他部分,节点编辑器实现的效果还是不错的
下面是正文
在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)这样问题就解决了

全选, 功能

您需要登录后才可以回帖 登录 | 立即注册

返回顶部