在PyQt5中接收手势(用于Android)



好吧,这个问题以前就有人问过,但是我还没有找到答案。

我正在尝试使用QLabel在图像之间左/右滑动,但我没有设法接收任何手势事件,但我的PyQt5基于应用程序。以下是我的文件:

class MyViewer(QtWidgets.QLabel):
def __init__(self, parent=None):
super().__init__(parent=parent)
self.setAttribute(QtCore.Qt.WA_AcceptTouchEvents)  # just gave it a try
self.grabGesture(QtCore.Qt.SwipeGesture)
def event(self, event):
if event.type() == QtCore.QEvent.Gesture:  # <= this won't happen
print("Hello event!")
return super().event(event)

我也试图寻找QtWidgets.QGestureEvent,但即使我只是打印出event.type(),我也只看到看似与任何手势无关的事件(除了一些QToucheEvent实例)

类似的问题是这个,这个,这个,我甚至读了一些文档,但我还没有看到一个工作的例子。只有问题和示例c++片段.

我在Linux和Android上都使用PyQt5.15.0,我没有看到任何手势的痕迹。我忘记做什么了吗?父母一定要被安排吗?

你用了几根手指?根据Qt论坛,Qt.SwipeGesture仅在使用两个或多个手指滑动时注册,具体取决于平台。一个手指表示为QtGui.QMouseEvent

如果你一直使用两个或更多的手指,也有可能你没有看到事件的原因是因为你没有明确地接受它们。医生说:

当QGesture到达你的小部件时,默认接受它。然而,总是明确地接受或拒绝一个手势是很好的做法。一般的规则是,如果你接受了一个手势,你就在使用它。如果你忽略了它,说明你对它不感兴趣。忽略一个手势可能意味着它被提供给另一个目标对象,或者它将被取消。[…忽略这个手势意味着这个手势不会再给你了。

最新更新