本文介绍了在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
实例)
类似的问题是this one、this one、this one,我甚至阅读了some documentation,但我还没有看到可用的示例。仅问题和示例C++代码片断..
我在Linux和Android上都使用了PyQt5.15.0,我还没有看到任何手势的痕迹。 我忘了做什么了?是否必须以某种方式设置父级?
推荐答案
您用几个手指滑动?根据the Qt forum的说法,Qt.SwipeGesture
只有在两个或更多手指滑动时才会注册,具体取决于平台。一个手指表示为QtGui.QMouseEvent
。
如果您一直在使用两个或多个手指,也有可能您没有看到事件的原因是您没有明确地接受它们。docs说:
当QGesture到达您的小部件时,它默认情况下被接受。但是,最好始终显式接受或拒绝手势。一般规则是,如果您接受某个手势,则表示您正在使用它。如果你忽视它,你就对它不感兴趣。忽略某个手势可能意味着该手势将被提供给另一个目标对象,或者它将被取消。[...]忽略该手势将意味着永远不会再向您提供该手势。
这篇关于在PyQt5中接收手势(适用于Android)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!