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)