Python PyQt4如何检测控制按+鼠标滚动

时间:2017-01-19 09:48:47

标签: python events pyqt pyqt4 mousewheel

我正在开发一个app.I希望有一个放大和缩小的选项。要执行此操作,我希望在单击控制键并同时滚动鼠标时获取程序,并相应地进行缩放(向上滚动以放大,向下滚动以缩小)我已经一直在进行大量的搜索和阅读,但只找到了控制按键和鼠标的方法点击事件,而不是鼠标滚动事件。我还找到了一种获得鼠标滚动的方法,但是无法通过控制按钮来实现它。 - 并忽略所有其他印刷机。

有人可以建议帮助我吗???

1 个答案:

答案 0 :(得分:2)

这取决于您的应用程序的结构。 获取滚动事件的一种方法是向您的Widget添加wheelEvent处理程序

def wheelEvent(self, QWheelEvent):
    modifiers = QtGui.QApplication.keyboardModifiers()
    if modifiers == QtCore.Qt.ControlModifier:
        # do your processing

另一种方法可能是在你要拦截滚动事件的组件中安装eventFilter

component.viewport().installEventFilter(self)  

(也许你必须在视口上的组件本身iso上安装事件过滤器。)

selfeventFilter函数,如

 def eventFilter(self, qobject, event):
        if (event.type() == QtCore.QEvent.Wheel) :
            modifiers = QtGui.QApplication.keyboardModifiers()
            if modifiers == QtCore.Qt.ControlModifier:
                #do some scaling stuff
                return True
            return False
        else:
            # standard event processing
            return False

希望这有帮助。