Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyQt4如何检测控件压力+;鼠标滚动_Python_Events_Pyqt_Pyqt4_Mousewheel - Fatal编程技术网

Python PyQt4如何检测控件压力+;鼠标滚动

Python PyQt4如何检测控件压力+;鼠标滚动,python,events,pyqt,pyqt4,mousewheel,Python,Events,Pyqt,Pyqt4,Mousewheel,我正在开发一个应用程序。我想有一个选项来放大和缩小。为了做到这一点,我想让程序在点击控制键的同时滚动鼠标,并相应地放大(向上滚动可放大,向下滚动可缩小)我做了很多搜索和阅读,但只找到了获得控制键和鼠标点击事件的方法,不是鼠标滚动事件。我也找到了一种方法来获得鼠标滚动,但无法让它与控制按钮一起工作并忽略所有其他压力 有人能给我一些建议吗?这取决于你的应用程序的结构。 获取滚动事件的一种方法是向小部件添加wheeleevent处理程序 def wheelEvent(self, QWheelEvent

我正在开发一个应用程序。我想有一个选项来放大和缩小。为了做到这一点,我想让程序在点击控制键的同时滚动鼠标,并相应地放大(向上滚动可放大,向下滚动可缩小)我做了很多搜索和阅读,但只找到了获得控制键和鼠标点击事件的方法,不是鼠标滚动事件。我也找到了一种方法来获得鼠标滚动,但无法让它与控制按钮一起工作并忽略所有其他压力


有人能给我一些建议吗?

这取决于你的应用程序的结构。 获取滚动事件的一种方法是向小部件添加
wheeleevent
处理程序

def wheelEvent(self, QWheelEvent):
    modifiers = QtGui.QApplication.keyboardModifiers()
    if modifiers == QtCore.Qt.ControlModifier:
        # do your processing
另一种方法是在您想要截获滚动事件的组件中安装eventFilter

component.viewport().installEventFilter(self)  
(可能必须在视口中的组件本身上安装事件过滤器)

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

希望这有帮助。

谢谢,但是我怎么知道滚轮事件是向上滚动还是向下滚动?event.delta()的符号(请参阅)您使用的是哪种方法?wheelEvent处理程序还是eventFilter?使用前一种方法(如果未正确安装事件过滤器,则使用第二种方法),您可能只在视图顶部接收向上滚动事件,而在视图底部接收向下滚动事件。你能证实这种行为吗?您还可以指出组件的类型以及是否在视口上安装事件过滤器吗?以下是我的代码:
def wheeleevent(self,event):modifiers=QtGui.QApplication.keyboardModifiers();如果修饰符==QtCore.Qt.ControlModifier:#这里我放大;其他:超级(主窗口,自我)。wheelEvent(事件)您在哪个对象上定义了此函数?它包含哪些(可滚动的)视图?里面可能有一个可滚动的容器,它正在使用向下滚动事件。如果是这样,您必须切换到第二种方法(使用eventFilter)