想使用【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.9https://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.10https://doc.qt.io/qt-5/qkeysequence.html#StandardKey-enum另附一位大佬关于绑定键具体的键组合表:
pyqt4文档阅读(11):QKeySequence_ljhandlwt的博客-CSDN博客_pyqt qkeysequence