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

Che*_*uel 4 python events pyqt mousewheel pyqt4

我正在开发一个应用程序。我希望有一个放大和缩小的选项。为此,我想让程序在单击控制键并且同时滚动鼠标时获得,并相应地缩放(向上滚动以放大,向下滚动以缩小)我一直在做大量搜索和阅读,但只找到了获取控件按下和鼠标单击事件的方法,而不是获取鼠标滚动事件的方法。我还找到了一种获得鼠标滚动的方法,但无法仅通过按控制键来使其工作。- 并忽略所有其他压力。

有人可以建议一些东西来帮助我吗???

Mar*_*ele 5

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

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

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

component.viewport().installEventFilter(self)  
Run Code Online (Sandbox Code Playgroud)

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

并且self有一个eventFilter类似的功能

 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
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。