PyQt5 键盘事件 【Ctrl】+【+】失效的解决办法

想使用【Ctrl】+【+】,但是失败了,失效代码如下:

def keyPressEvent(self, event):
    """按键事件
    """
    if modifiers == Qt.ControlModifier and event.key() == Qt.Key_Plus:  # Ctrl + + 按键事件
        print("zzzzz")
    super().keyPressEvent(event)

网上没啥相关文章,于是翻了官方文档,发现keyEvent里有个matches()方法,试了一下,没想到立马解决了。

QKeyEvent Class |Qt 图形用户界面 5.15.9icon-default.png?t=M4ADhttps://doc.qt.io/qt-5/qkeyevent.html#matches文档里对matches()这样描述:

bool QKeyEvent::matches(QKeySequence::StandardKey key) const

如果键事件与给定的标准键匹配,返回rue;否则返回 false

大意就是PyQt自带一套标准绑定组合键(枚举值),如果用户的按键组合符合绑定键,则返回True。

实际使用如下:

def keyPressEvent(self, event):
    """按键事件
    """
    if event.matches(QKeySequence.ZoomIn):  # Ctrl + + 按键事件
        print("xxxxxxxxxx")
    super().keyPressEvent(event)

QKeySequence.ZoomIn 是绑定组合键【Ctrl】+ 【+(Plus)】的枚举值,意思是放大。

估计是因为PyQt5里已有这个组合键,所以导致我自己的组合键失效了。

所以有时候如果组合键失效,可以排查一下是否被官方的绑定组合键干扰到了。

下面是枚举值链接:

QKeySequence Class |Qt 图形用户界面 5.15.10icon-default.png?t=M4ADhttps://doc.qt.io/qt-5/qkeysequence.html#StandardKey-enum另附一位大佬关于绑定键具体的键组合表:

pyqt4文档阅读(11):QKeySequence_ljhandlwt的博客-CSDN博客_pyqt qkeysequence

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值